0

ここに2種類のタイトルの違いはありますか?

@interface MyObject: NSObject{
    NSString *title;
}


@property (nonatomic, retain) NSString *title;
4

2 に答える 2

10

1つ目はインスタンス変数です。

2番目はプロパティです。

インスタンス変数は、クラスの宣言(インターフェイス)の一部として大部分が非推奨になっていますが、クラスの内部で使用されるインスタンス変数は、拡張機能または@implementationで宣言できます。

プロパティは、API(セッター/ゲッター)と採用されたメモリ管理モデルの両方を宣言します。デフォルトでは、最新のコンパイラはインスタンス変数を自動的に合成してプロパティをバックアップします。

于 2013-03-26T02:27:02.367 に答える
1

上記のものはプロパティではなく、単なるインスタンス変数です。ここでの私の意見:

  1. 最新のXcodeを使用してください。
  2. インスタンス変数を書き込まないでください:@interface MyObject : NSObject { NSString *title; }
  3. Xcodeは、プロパティをサポートするインスタンス変数である場合に のみ使用@propertyし、明示的に使用する必要はありません。@synthesize@synthesize title = _title;_titleself.title

これは一種の良いコーディングスタイルだと思います。

于 2013-03-26T02:53:53.240 に答える