我当前项目中的许多类都有几个只能从类本身内部调用的属性和方法。此外,根据类(class)的当前状态,它们可能会扰乱类(class)的工作。
目前,所有这些接口(interface)都在 .h 文件的主接口(interface)声明中定义。将“私有(private)”方法和属性放在 .m 文件的顶部是否被认为是好的做法?
这不会影响任何事情,因为我很可能是唯一一个查看此源代码的人,但当然,了解 future 的项目会很有趣。
最佳答案
从 Objective-C 2.0 开始,最佳实践是将私有(private)方法放在“类扩展”中。如果您尚未实现其中一种方法,这允许编译器向您发出警告。类扩展还允许您修改 @properties 的读/写语义,以便公共(public) 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
block ,编译器会给出警告。这比使用像 @interface MyClass (PrivateMethods)
这样的类别的旧方法更好。在这种情况下,编译器无法警告您该方法未实现。
关于cocoa - 在 Cocoa 中,将私有(private) API 放在 .m 文件中,将公共(public) API 放在 .h 文件中,这是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2539853/