我知道这听起来像是一个非常愚蠢和愚蠢的问题但在制作扩展的setter函数时使用目标ivars或传递的参数有什么不同:
- (void)setText:(NSString)text {
_text = text;
self.label.text = text; // VS
self.label.text = _text;
}
self.label.text
的两个作业之间是否有任何功能或效率差异?
答案 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
。