ios - iOS第一个应用程序“self.userName = textField.text”。何时使用 self

标签 ios self accessor notation

这是Apple的“您的第一个iOS应用程序”文档中的代码段。

- (IBAction)changeGreeting:(id)sender {

self.userName = textField.text;

NSString *nameString = self.userName;
if ([nameString length] == 0) {
    nameString = @"World";
}
NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString];
label.text = greeting;
[greeting release];
}

我知道self.username调用综合set方法(因为它具有复制标志,所以很重要)。

为什么textField.text和label.text不是self.textField.text和self.label.text。

这两个相等吗?
因为已经存在可以使用get方法的点符号了,所以自我是不必要的吗?

最佳答案

是的:在这种情况下,textField.text等效于self.textField.text,因为合成的getter仅返回文本字段。大概苹果公司之所以简洁,是因为他们希望代码可读。不过,我还是偏爱您的方法:使用属性,如果您想自定义访问方法,则最好坚持使用访问器方法。

请注意,该属性是与内部变量分离的单独实体。 Apple的风格是为它们赋予相同的名称,但是一些程序员喜欢通过给内部变量加下划线前缀来分隔这两个概念。在这种情况下,_textField.text在这里将得到与self.textField.text相同的结果。但是只有第二个方法是访问您的类为文本字段生成的getter方法-第一个方法是行使其作为类内部代码的权利来直接访问内部变量。

关于ios - iOS第一个应用程序“self.userName = textField.text”。何时使用 self ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6188954/

相关文章:

ios - 是否可以在 Interface Builder 中使用自动布局定位 View ,以便如果标签为空,其他 View 将不会保留空间?

swift - 如何编写一个通用的 Swift 类函数来使用闭包初始化类?

copy - 通过 "accessor"和 "copy"处理字段有什么区别

c# - 在 C# 中替换/更改空白或空字符串值

c++ - 使用访问器访问静态 std::set 是明智的还是我应该直接访问它?

objective-c - '无法对类型 : (null)' when setting up UINavigationController 进行比较查询

ios - flutter @Error : Null safety features are disabled for this library

WPF 与 RelativeSource Self 绑定(bind)

iphone - 类属性 mVar 和实例变量 self.mVar 的区别

ios - safeAreaLayoutGuide - 横向模式