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