現在、iOS 開発の方法を学び始めており、現在、Apress の iOS6 入門書を執筆中です。
第 2 章には、2 つのボタンとラベルを表示する簡単なチュートリアルがあり、ボタンを押すと、どちらが押されたかがラベルに表示されます。
チュートリアルを完了しましたが、答えが見つからない 1 つの疑問が生じました。
違いが生じる場合に備えて、チュートリアルでは 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;
これを実行すると、コードがコンパイルされて正常に実行されたので、チュートリアルに戻って何か見逃していないかどうかを確認して、なぜこれが起こったのかを理解しようとしましたが、何も表示されませんでした.
本のコードがコンパイルされなかった理由と、変数の前にアンダースコアを追加しなければならなかった理由を誰か説明できますか? これは正しいですか、それとも何か間違ったことをしましたか?