bas*_*ibe 2 cocoa implementation private interface
我当前项目中的许多类都有几个属性和方法,只能从类本身中调用.此外,他们可能会根据班级的当前状态搞乱班级的工作.
目前,所有这些接口都在.h文件的主接口声明中定义.将"私有"方法和属性放在.m文件的顶部是不错的做法?
这不会影响任何事情,因为我很可能是唯一一个看过这个源代码的人,但当然知道未来的项目会很有趣.
从Objective-C 2.0开始,最佳实践是将私有方法放在"类扩展"中.如果您尚未实现其中一种方法,则允许编译器发出警告.类扩展还允许您修改@properties的读/写语义,以便公共API可以,例如,特定readonly于属性,而内部属性可以用作readwrite.
在.h:
@interface MyClass : NSObject
{}
@property (readonly) id myProp;
- (void)aPublicMethod;
@end
在.m:
@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)在这种情况下,编译器无法警告您该方法未实现.