【问题标题】: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];

【问题讨论】:

标签: objective-c


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 那么,假设@property 被声明,[self firstNode] 没有任何作用? (self 部分)
    • 如果没有声明属性,则不能调用[self firstNode],除非您声明并定义了实际方法- (Node *)firstNode
    猜你喜欢
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    相关资源
    最近更新 更多