2016-09-19 7 views
0
@interface DZActionView(){ 
    NSString* _name; 
} 

@interface DZActionView() 
    @property(strong, nonatomic)NSString* name; 
@end 

違いは何ですか? 私は@propertyを使用するとわかります。 getter/setterメソッドと_nameプロパティを生成します。Objective-Cでプロパティを作成する2つの方法の違いは何ですか

+2

最初はプロパティではなく、単なるインスタンス変数です。 2番目はプロパティです。 – Paulw11

答えて

2

あなたはこのために意味場合:

@interface DZActionView(){ 
    NSString* _name; 
} 

をあなたの第二の方法であるためにあなたの最初のプロパティを作成する方法、および

@interface DZActionView() 
    @property(strong, nonatomic)NSString* name; 
@end 

であることを、あなたはどのようにObjective-Cの誤解していますプロパティを使用します。

最初のメソッドはプロパティではなく、インスタンス変数のみです。他のオブジェクトからアクセスすることはできません。

第2の方法では、実際にプロパティを作成します。 Objective-Cの以前のバージョンでは、プロパティのバッキングインスタンス変数を作成する必要がありました。これは、あなたが含まれている変数_nameのためのものです。これは、明示的に追加する必要がある場合を除き、主に自動的に自動的に行われます。あなたは(これらに類似)、独自のgettersetter方法が含まれている場合

- (NSString*)name { 
    return _name; 
} 
- (void)setName:(NSString*)name { 
    _name = name 
} 

を次にこれらは明示的に言及した_nameインスタンス変数を参照している、とバッキング変数としてそれを使用しています。

関連する問題