3

このすべての新しい ARC のもの (NDA には該当しません…) が出てくると、プロパティを処理するためのデフォルトは、次のようなもので合成するまで、実装ファイルで明示的に ivar なしでプロパティを設定することのようです:

@synthesize var = _var;

変数の設定に使用するベスト プラクティスは何ですか? varとの違いは、ドット表記を使用し、var のセッター メソッドを使用していることを知っていself.varますself.var

_var古き良き時代のようにヘッダーファイル内に設定するのと同じですか?すべての前にアンダースコアを付ける慣習はどこから来たのですか?

4

2 に答える 2

2

_varインスタンス変数の別の名前です(おそらく、アクセサーを使用するつもりだったときに誤って直接アクセスしないようにするためです)。この言語では、有効な ivar 名であること以外に特別な意味はありません。

于 2011-06-16T19:25:45.197 に答える
1

@propertylike:を定義する@property (nonatomic, strong) NSString *var;と、Objective-C 2.0 以降では、2012 年以降、@synthesizeそのプロパティによって次の 3 つのものが自動的に作成されます。

  • の基になるインスタンス変数NSString *_var
  • 基になるインスタンス変数を取得するメソッド:-(NSString *)var {}
  • 基になるインスタンス変数を設定する方法:-(void)setVar:(NSString *)newVar {}

一般に、基になるインスタンス変数に直接アクセスしたり直接設定したりすることはお勧めできません。これは、KVO をいじったり、getter メソッドまたは setter メソッドに配置された可能性のある副作用をバイパスしたりするためです。

于 2018-01-11T16:32:07.223 に答える