В Objective-C есть своего рода хакерский способ создания частных методов в файле .m:
@interface FooClass (PrivateMethods)
- (void) doBar:(id)barAction withBaz:(id)bazAction;
@end
Это прекрасно работает для методов.Я попытался сделать то же самое со свойством:
@interface BarClass (PrivateMethods)
@property (nonatomic, strong) BazObject *myBaz;
@end
@implementation BarClass
@synthesize myBaz = _myBaz;
[...]
@end
Это привело к предупреждению компиляции: свойство, объявленное в категории 'PrivateMethods', не может быть реализовано в реализации класса.Я пытался переместить свою собственность в категорию:
@implementation BarClass (PrivateMethods)
@synthesize myBaz = _myBaz;
@end
Затем: @synthesize is not allowed in a category's implementation.
Очевидный ответ: «Прекратите попытки, просто используйте ivars», но мне сказалилюди в Apple, что они (лично) перешли на полностью использование свойств.Безопасность, которую они приносят (например, безопасность на пистолете, тяжелее выстрелить себе в ногу), делает меня счастливым внутри, так есть ли способ сделать это, не прибегая к голым иварам?