在Objective-C iOS 6.1中使用下划线的目的是什么?

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会给我一个错误。为什么会这样?


下划线的目的是使其成为这样,这样当您打算使用该属性时,就不会意外地直接使用ivar。


因为没有下划线,名称就不存在。这是因为@property的含义和编译器在幕后为您做的事情。基本上,可以使用self.betTextField(使用自动定义的访问方法)或_betTextField(直接访问实例变量)访问属性。