这是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/