【发布时间】: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];
【问题讨论】:
标签: objective-c
可能重复:
Should I always use accessors for instance variables in Objective-C?
假设我的.h 文件包含
Node *firstNode
.m 文件内
有什么区别
[firstNode doSomething]; 和
[[self firstNode] doSomething];
【问题讨论】:
标签: objective-c
[firstNode doSomething]; 直接访问实例变量,而[[self firstNode] doSomething] 则没有。
这听起来很明显,但是 getter 可能会做各种各样的事情,它的声明会导致各种有趣的事情。例如,标记访问器retain 会影响firstNode 的引用计数,而Eimantas 的回答告诉我们超类(或子类!)可能会改变[self firstNode] 的确切含义。
【讨论】:
假设您为 firstNode 实例变量声明了 @property,则前一种方法不会在您的类中使用 [可能被覆盖的] getter。
【讨论】:
[self firstNode] 没有任何作用? (self 部分)
[self firstNode],除非您声明并定义了实际方法- (Node *)firstNode。