インスタンス変数を宣言する必要がある理由を理解するのが苦労しています。後者の例では、私はONLY建て..あなたが見ることができるように、これはObjective Cのインスタンス変数、なぜそれらを宣言すべきですか?
@interface LearningViewController : UIViewController {
//instance variables go here, but are not declared, I just leave this field blank
}
@property (nonatomic,retain) IBOutlet UILabel *myText;
-(IBAction)method:(id)sender;
@end
としてもを行うことができます
@interface LearningViewController : UIViewController {
UILabel *myText; // <--- Instance Variables
}
@property (nonatomic,retain) IBOutlet UILabel *myText;
-(IBAction)method:(id)sender;
@end
..私は例えば..私は何を意味するか
を説明しましょうsetter/getter for the UILabel * myText
しかし前者ではインスタンス変数も宣言していました。
どちらも、今、両方のものが同じ結果を生成し、エンド
@implementation LearningViewController
@synthesize myText;
-(IBAction)method:(id)sender {
[myText setText:@"hey"];
//or
NSString *myObject = [[NSString alloc]initWithString:@"hey"];
[myText setText:myObject];
}
で働いて終わります。だから私の質問は、なぜですか?いずれかの方法でメリットがあるのは何ですか? そして、なぜ私が構築し、私は事前に
[myText setText:@"hey"];
おかげで行うことができるとき
NSString *myObject = [[NSString alloc]initWithString:@"hey"];
myText.text = myObject;
オブジェクトです。
私の記事を編集してくれてありがとうJhaliya、私はかなり新しくなっています。(あなたが必要としている場所で情報を隠すことと、ドット表記を使うことの両方で)ここでそれは質問をすることになると(それは私の最初のことです)そして、ありがとうウィリアムその素早い答えのために。 – Andy
iOSは現代のランタイムを使用しているので、iOSの合成されたivarsに頼るのはいいです。以前はiOSシミュレータで古いランタイムが使用されていたため、シミュレータを使用していた場合は合成されたivarsを使用できませんでしたが、もはやそうではありません。 – Caleb
@カレブ:確かに;この事実を反映するように答えが更新されました。 –