Начиная с Objective-C 2.0, лучшая практика - помещать закрытые методы в «расширение класса». Это позволяет компилятору предупреждать вас, если вы не реализовали ни один из методов. Расширения класса также позволяют изменять семантику чтения / записи @properties, чтобы общедоступный API мог, например, указать readonly
для свойства, а внутренне свойство можно использовать как readwrite
.
В .ч:
@interface MyClass : NSObject
{}
@property (readonly) id myProp;
- (void)aPublicMethod;
@end
В .м:
@interface MyClass ()
@property (readwrite) id myProp; //upgrade myProp to readwrite within the class.
- (id)aPrivateMethod;
@end
@implementation MyClass
@synthesize myProp;
- (void)aPublicMethod { ... }
- (id)aPrivateMethod;
@end
Если вы забудете реализовать -aPrivateMethod
в основном блоке @implementation
, компилятор выдаст предупреждение. Это лучше, чем старый способ использования категории, такой как @interface MyClass (PrivateMethods)
, в этом случае компилятор не может предупредить вас, что метод не был реализован.