【发布时间】:2013-06-15 03:06:28
【问题描述】:
@interface AClass : SomeType {
@protected
NSMutableArray* amINotAlreadyProtected; //?
}
如果@protected 是默认值,为什么这段代码需要@protected?这段代码是由一位非常有经验的程序员编写的,但我自己会省略说明符。
【问题讨论】:
-
@public、@protected和@private来自一个属性是手动编码的时代(它们没有@property指令),并且 iVar 访问几乎是普遍的如果您需要完成工作。他们从不弃用它们,因为部分 Apple 框架仍在使用它们。 -
@CodaFi 好的。感谢您的信息。
-
@JoshCaswell 因为一位拥有大约 25 年经验的程序员在他的课堂上写了它。我自己会省略它。
-
@CodaFi 我想不同意你的观点,但后来我看到你是代表,并认为我比你更有可能是错的。 ^^ 因此,我将把它作为一个问题提出——@private/@protected/@public 是否仍然用于程序员不想用作属性的 ivars,这取决于子类是否继承?跨度>
-
@Filip 我并没有说它还没有被使用,问题是 Apple 为我们提供了更新更好的工具来帮助加强封装规则。
iVar访问在接口中自动公开(好吧,受保护),但是@implementation指令可以定义 iVars 的新功能违背了@private的目的。现代 ObjC 中不需要这些指令
标签: objective-c interface visibility instance-variables protected