以下是Apple的「Your First iOS Application」文檔的代碼片段。iOS First Application「self.userName = textField.text」。何時使用自我
- (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調用合成設置方法(重要的,因爲它有一個複製標誌)。
爲什麼textField.text和label.text不是self.textField.text和self.label.text。
兩者是否相等? 由於點符號已經存在,哪些已經可以訪問get方法,是不必要的?
感謝您的澄清。假設textField是一個對象的類,已經適當地合成了getter和setter方法,那麼_textField.text是否會運行get方法?如果沒有,如果_textField的文本實例變量設置爲private,它會不可訪問嗎? – Ben 2011-05-31 14:56:44
請注意,至少[某些情況下](http://tinyurl.com/4yxm7tf),Apple保留下劃線前綴以供自己使用。您最好使用下劃線後綴代替,例如使用'textField_'而不是'_textField'。 – Caleb 2011-05-31 15:49:48
@Ben:是的,如果'_textField'對象具有'text'屬性,它應該提供一個getter(無論是否合成),並且點符號會調用它。如果它沒有提供一個,並且實例變量是私有的,那麼這些數據確實無法被其他類的對象訪問。 – 2011-06-01 09:18:55