关于“自我”和本地访问器[重复]

Posted

技术标签:

【中文标题】关于“自我”和本地访问器[重复]【英文标题】:On "self" and local accessors [duplicate] 【发布时间】:2011-09-19 17:33:58 【问题描述】:

可能重复:Should I always use accessors for instance variables in Objective-C?

假设我的.h 文件包含

Node *firstNode

.m 文件内

有什么区别

[firstNode doSomething];

[[self firstNode] doSomething];

【问题讨论】:

还有:***.com/questions/5164864***.com/questions/4271657***.com/questions/1332389***.com/questions/4088801***.com/questions/3494157***.com/questions/1519638***.com/questions/3753130 【参考方案1】:

[firstNode doSomething]; 直接访问实例变量,而[[self firstNode] doSomething] 则没有。

这听起来很明显,但是 getter 可能会做各种各样的事情,它的声明会导致各种有趣的事情。例如,标记访问器retain 会影响firstNode 的引用计数,而Eimantas 的回答告诉我们超类(或子类!)可能会改变[self firstNode] 的确切含义。

【讨论】:

【参考方案2】:

假设您为 firstNode 实例变量声明了 @property,则前一种方法不会在您的类中使用 [可能被覆盖的] getter。

【讨论】:

那么,假设@property 被声明,[self firstNode] 没有任何作用? (self 部分) 如果没有声明属性,则不能调用[self firstNode],除非您声明并定义了实际方法- (Node *)firstNode

以上是关于关于“自我”和本地访问器[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从装饰器访问自我

C#访问器和初始化[重复]

C ++访问类内容器的开始()/结束()方法[重复]

无法访问 Service Fabric 本地群集管理器

关于何时在私有成员变量上实现访问器而不是将它们公开的实践

公共访问器与类的公共属性[重复]