2011-12-13 20 views
2

インターネットでこのコードスニペットを見ました(http://iphonedevelopment.blogspot.com/2008/12/outlets-property-vs-instance-variable.html)。目的C - プロパティを定義する際にインスタンス変数を定義する

#import <UIKit/UIKit.h> 

@interface MyViewController : UIViewController { 
UILabel *myLabel; 

} 
@property (nonatomic, retain) IBOutlet UILabel *myLabel; 
@end 

私の質問は... @synthesizeが呼び出されたとき、UILabelインスタンス変数が自動的に作成されないのですか?ヘッダーファイルにインスタンス変数を作成するポイントは何ですか?あなたは@propertyだけで離れてもらえますか?

+0

[Objective-C 2.0のプロパティとインスタンス変数]の重複可能性(http://stackoverflow.com/questions/3074248/properties-and-instance-variables-in-objective-c-2-0) – Brian

答えて

3

はい。

ヘッダーファイルにインスタンス変数を作成するポイントは何ですか。

個人の好み。いくつかの開発者(私のような)は、クラスの状態の完全な図を見ることを好みます。どのインスタンス変数が使用可能であるかを確認するだけでなく、すべてのインスタンス変数が正しく解放されることを確認することができます。

また、比較的新しい機能です。古いコードは、自動的に生成されたインスタンス変数を期待しません。

あなたは@propertyから離れてもらえますか?

いいえ、自動的に生成されるインスタンス変数を取得する必要があります。プログラムで生成されたプロパティ値は、インスタンス変数に直接マップされません。

1

@synthesizeは、インスタンス変数を作成しますが、あなたは実に不便なことができ、デバッガでそれを見ることができません。

を参照してください。

これについてアップルにバグを提出することを検討してください。 @synthesizeが自動的に作成UILabelインスタンス変数ではありませんと呼ばれ

関連する問題