如果@protected是默认值,为什么这个ivar需要@protected?

时间:2013-06-18 18:55:54

标签: objective-c interface visibility instance-variables protected

@interface AClass : SomeType {
@protected
    NSMutableArray* amINotAlreadyProtected; //?
}

如果@protected是默认代码,为什么此代码需要@protected?这段代码是由一位非常有经验的程序员编写的,但我自己会省略说明符。

2 个答案:

答案 0 :(得分:5)

关键字@protected 不需要,因为它是默认行为。

然而,一些程序员倾向于使用它,因为一个经验较少的程序员在以后出现并且不知道这一点。还可以提到的是,它增加了代码的可读性,因为有一些变量受到保护,而其他私有或公共变量。

答案 1 :(得分:2)

从你可能会看到的时代开始:

@interface Foo:Bar
{
     @private
     … ivars …
     @protected
     … ivars …
}
…
@end

也就是说,虽然@protected是默认值,但如果您已切换到其他变体之一并想要切换回来,则需要使用它。并且,是的,有理由(通常是坏的)确保ivar声明顺序从发布到发布保持不变。

除此之外,包括默认案例的关键字可确保迂腐的灰色胡须(如我自己)在其声明中可以完全明确。

然而,像@property这样的现代补充意味着不再需要这样的诡计。