在标头中声明私有实例变量与在实现中声明它有什么区别吗?
在 TestObj.h 中
@interface TestObj : NSObject
{
int test;
}
@end
与 TestObj.m 中的比较
@interface TestObj()
{
int test;
}
@end
两者对我来说似乎都是一样的,在标头中声明实例变量与在实现中声明实例变量之间是否有任何实际区别,如果没有,哪个是首选?这@interface
在实现文件中似乎只是声明私有属性的一种方式,除此之外它还有其他用途吗?
通常首选将私有实例变量和属性放在私有类扩展中(在 .m 中),并为那些真正属于公共接口一部分的属性和方法保留公共接口文件 (.h)。
它有助于将实现细节与公共接口隔离,并使一切变得更加清晰。它还确保外部类不会无意中更改此类的私有变量。
See 类扩展扩展了内部实现 https://developer.apple.com/library/ios/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html#//apple_ref/doc/uid/TP40011210-CH6-SW3.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)