2011-08-08 10 views
4

このコードは動作します:プロパティもインスタンス変数として宣言されていますか?

@interface StringStuff : NSObject { 

    } 
    @property (nonatomic, retain) NSString *String1; 
    @property (nonatomic, retain) NSString *String2; 

    - (NSString *) doSomethingWithStrings; 

    @end 

しかし、私は、多くの場合、以下を参照してください

 @interface StringStuff : NSObject { 
      NSString *String1; 
      NSSTring *String2;  
     } 
     @property (nonatomic, retain) NSString *String1; 
     @property (nonatomic, retain) NSString *String2; 

     - (NSString *) doSomethingWithStrings; 

     @end 

は性質がしばしばだけでなく、インスタンス変数として宣言されている理由はありますか?それはちょうど良い形と考えられていますか?

答えて

6

レガシー;以前は、ivarの宣言が必要であった(そしてまだ32ビットのMac OS Xターゲットコード上にある)。これは、iOS、シミュレータ、64ビットOS Xには当てはまりません。self.iVarが本当に必要なときに偶発的な直接アクセスを防ぐためには、@synthesize iVar = iVar_;が一般的です。

関連する問題