我開始學習如何在一分鐘的iOS開發和我目前有Apress開始我正在努力的IOS6書。iOS - 開始iOS教程 - 在變量之前加下劃線?
在第二章中有一個簡單的教程,用於顯示兩個按鈕和一個標籤,當按下按鈕時,它會在標籤上顯示哪一個被按下。
我已經完成了本教程,但它提出了一個問題,我找不到答案。
本教程使用ARC(自動引用計數)的情況下,有所作爲。
下面是代碼,
頭文件:
#import <UIKit/UIKit.h>
@interface MTMViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *statusLabel;
- (IBAction)buttonPressed:(UIButton *)sender;
@end
和M檔:
#import "MTMViewController.h"
@implementation MTMViewController
- (IBAction)buttonPressed:(UIButton *)sender {
NSString *title = [sender titleForState:UIControlStateNormal];
NSString *plainText = [NSString stringWithFormat:@"%@ button pressed.", title];
statusLabel.text = plainText;
}
@end
以上就是它如何出現在書中,但在做的時候在Xcode教程我不能編譯以下行:
statusLabel.text = plainText;
,而是必須將其更改爲:
_statusLabel.text = plainText;
當我做到了這一點編譯的代碼和運行得很好,我試圖要回通過教程,看看我是否錯過了什麼,但要弄清楚爲什麼會這樣我什麼也沒看見。
任何人都可以解釋爲什麼書中的代碼沒有編譯,爲什麼我不得不將下劃線添加到變量的前面?這是正確的還是我做錯了什麼?
有「@synthesize」的概念來產生getter和setters。如果使用「@synthesize」聲明該屬性,則可以使用相同的名稱直接訪問該屬性。僅供參考。 –
@Jennis我真的不會推薦這麼做,因爲這會對你是否訪問底層變量或通過生成的getter/setter造成混淆。對不同的訪問方式使用不同的名稱可以明確代碼的作用和理由。如果使用舊版本的Xcode,其中'@ synthesize'對屬性是強制性的,我建議使用'@synthesize statusLabel = _statusLabel'形式。 – WDUK