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

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

4

2 回答 2

5

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

但是,无论如何,一些程序员倾向于使用它,以防经验不足的程序员在以后出现并且不知道这一点。还可以提到它增加了代码的可读性,以防有一些变量是受保护的以及其他私有或公共的。

于 2013-06-18T18:58:44.800 回答
2

它来自一个你可能会看到的时代:

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

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

除此之外,包含默认情况的关键字可确保学究气的灰胡子(如我自己)可以在声明中完全明确。

然而,像@property这样的现代添加意味着不再需要这种恶作剧。

于 2013-06-18T20:48:24.080 回答