Я сомневаюсь, что есть какой-то способ предотвратить это.
Информация о классе, методе, свойстве, протоколе и категории Objective-C все динамически регистрируется во время выполнения.Поэтому раздел __DATA
вашего исполняемого файла должен содержать всю эту информацию.Такие инструменты, как class-dump
, просто перепроектируют эти таблицы для создания файла эквивалентного интерфейса (.h
).
Единственный способ обойти это - программно создавать ваши классы во время выполнения, что, на мой взгляд,быть просто сумасшедшим.
Уродливое, половинное решение - полное потенциальных проблем - это попытка запутать код какой-то формой:
#define MyClass m0
#define doSomething m1
#define userClickedButton m2
#define hitCount m3
@interface MyClass
- (void)doSomething;
- (IBAction)userClickedButton:(id)sender;
@property NSUInteger hitCount;
будет отображаться в скомпилированном приложении как
@interface m0
- (void)m1;
- (void)m2:(id)o;
- (unsigned long)m3;
- (void)setM3:(unsigned long)n;