What is the purpose of using an underscore in Objective-C iOS 6.1?
我是iOS开发的新手。我正在创建一个简单的应用程序,它根据用户的下注和他们为马输入的赔率来计算下注的赔率。在xcode(4.6.3)中,我有以下方法,用于计算单击按钮时将用户赌注增加1:
1 2 3 4 5 6 7 8
| -(IBAction) addBet:(id) sender {
self.bet = [_betTextField.text intValue];
if(self.bet > 0) {
self.bet += 1;
self.betTextField.text = [NSString stringWithFormat:@"%d", self.bet];
}
} |
我在头文件中声明了bettexfield变量,如下所示:@property (weak, nonatomic) IBOutlet UITextField *betTextField;。如果在betTextField.text变量之前不使用下划线,xcode会给我一个错误。为什么会这样?
- 因为自动属性合成的命名约定是这样设计和实现的。
- 另外还有16个:stackoverflow.com/q/5582448 stackoverflow.com/q/6049269 stackoverflow.com/q/2371489 stackoverflow.com/q/7174277 stackoverflow.com/q/5659156 stackoverflow.com/q/837559 stackoverflow.com/q/6146244 stackoverflow.com/q/10651535 stackoverflow.com/q/6124109 stackoverflow.com/q/8145373 stackoverflow.com/q/3521254 stackoverflow.com/Q/6064283 stackoverflow.com/Q/9696359 stackoverflow.com/Q/5521499 stackoverflow.com/Q/5466496 stackoverflow.com/Q/2114587
下划线的目的是使其成为这样,这样当您打算使用该属性时,就不会意外地直接使用ivar。
因为没有下划线,名称就不存在。这是因为@property的含义和编译器在幕后为您做的事情。基本上,可以使用self.betTextField(使用自动定义的访问方法)或_betTextField(直接访问实例变量)访问属性。