在setter函数中设置和使用ivars或传递的参数

时间:2014-07-09 22:15:18

标签: objective-c properties setter ivar

我知道这听起来像是一个非常愚蠢和愚蠢的问题但在制作扩展的setter函数时使用目标ivars或传递的参数有什么不同:


- (void)setText:(NSString)text {
    _text = text;
    self.label.text = text; // VS
    self.label.text = _text;
}

self.label.text的两个作业之间是否有任何功能或效率差异?

1 个答案:

答案 0 :(得分:2)

不,在您的示例中使用ivar和传递参数之间没有区别。

但是,如果您使用访问者,则会有所不同:

// These are the same
self.label.text = text;
self.label.text = _text;

// This will call the getter
self.label.text = self.text

作为差异的一个例子,考虑一下我们是否有一个自定义(愚蠢)的吸气剂:

- (NSString *)text
{
    return @"Hello";
}

在这种情况下,无论@"Hello"的值如何,都会返回文字字符串text