ここに2種類のタイトルの違いはありますか?
@interface MyObject: NSObject{
NSString *title;
}
@property (nonatomic, retain) NSString *title;
ここに2種類のタイトルの違いはありますか?
@interface MyObject: NSObject{
NSString *title;
}
@property (nonatomic, retain) NSString *title;
1つ目はインスタンス変数です。
2番目はプロパティです。
インスタンス変数は、クラスの宣言(インターフェイス)の一部として大部分が非推奨になっていますが、クラスの内部で使用されるインスタンス変数は、拡張機能または@implementationで宣言できます。
プロパティは、API(セッター/ゲッター)と採用されたメモリ管理モデルの両方を宣言します。デフォルトでは、最新のコンパイラはインスタンス変数を自動的に合成してプロパティをバックアップします。
上記のものはプロパティではなく、単なるインスタンス変数です。ここでの私の意見:
@interface MyObject : NSObject {
NSString *title; }
@property
し、明示的に使用する必要はありません。@synthesize
@synthesize title = _title;
_title
self.title
これは一種の良いコーディングスタイルだと思います。