最近,Objective-C 中显式声明的实例变量似乎被认为是要避免的事情,首选是使用“私有”属性,即在 .m 文件的类扩展中声明的属性。
最后一个例子是关于 Objective-C 进步的 WWDC '12 演示文稿。
我无法找到这种偏好的理由,我已经搜索了很多。它显然为脆弱的基类问题提供了一种解决方案,但这已经用 Objective-C 2 解决了。
是否有一些我遗漏的重要文件,或者有一个善良的灵魂可以在这里提供的简单解释?
最近,Objective-C 中显式声明的实例变量似乎被认为是要避免的事情,首选是使用“私有”属性,即在 .m 文件的类扩展中声明的属性。
最后一个例子是关于 Objective-C 进步的 WWDC '12 演示文稿。
我无法找到这种偏好的理由,我已经搜索了很多。它显然为脆弱的基类问题提供了一种解决方案,但这已经用 Objective-C 2 解决了。
是否有一些我遗漏的重要文件,或者有一个善良的灵魂可以在这里提供的简单解释?
你是这个意思?
@interface Foo : NSObject {
float bar;
id baz;
}
如果这些实例变量不是公共接口的一部分,最好将它们移动到实现文件中,或者作为类扩展中的声明属性或@implementation
块中:
@interface Foo ()
@property(assign) float bar;
@property(strong) id baz;
@end
…或者:
@implementation Foo {
float bar;
id baz;
}
这样,在标头中声明的公共接口保持简单,实现中的更改不会强制重新编译导入标头的所有源文件。