不鼓励使用实例变量吗?

时间:2012-06-27 12:54:35

标签: objective-c

最近,似乎在Objective-C中显式声明的实例变量被认为是要避免的事情,首选是使用“私有”属性,即在.m文件中的类扩展中声明的属性。

最后一个例子是WWDC '12关于Objective-C进展的演示文稿。

我无法找到的是这种偏好的理由,我已经搜索了很多。它显然为脆弱的基类问题提供了一种解决方案,但是已经用Objective-C 2解决了这个问题。

是否有一些我错过的重要文件,或者是否有一个善良的灵魂可以提供的简单解释?

2 个答案:

答案 0 :(得分: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;
}

这样,标头中声明的公共接口保持简单,实现中的更改不会强制重新编译导入标头的所有源文件。

答案 1 :(得分:0)

我在这里找到了解释:iOS: must every iVar really be property?,尤其是@ bbum的回答。