質問

私は@SyntheSizeがインスタンス変数のゲッターとセッターをオートクライクにすることを理解しています。= _something部品を指定すると、これによりコンパイラ/ランタイムにゲッター/セッターのための特定のバッキング変数を使用したいことを知らせます。

は、私のゲッター/セッターと一緒に変数を変えることを自動化したり、インターフェース/実装ファイルにそのインスタンス変数を定義する必要がありますか?

役に立ちましたか?

解決

質問は、実装内のヘッダファイルと@ propertyが基礎となるIVARを作成するか、またはIVARがヘッダファイルに表示されているかどうかということです。例、ヘッダーファイルの場合:

@interface SomeClass : NSObject {
    NSString *_someString;    // Is this needed???
}
@property NSString *someString;
.

および実装内容:

@synthesize someString = _someString;
.

答えは、それがあなたが遺産または現代のランタイムを使っているかどうかによって異なります。 iOSでは、あなたは常に現代のランタイムを使用しているので、NSString *_somestring行を必要としませんが、この質問はMac OS Xについてです.Mac OS X用の場合は、Mac OS X 10.5以降で64ビットのプログラムを使用している場合は使用しています。モダンなランタイム、それ以外の場合は、レガシーランタイムを使用しており、ヘッダーファイルに追加の行が必要です。いくつかの誤情報があるので、ここに参考文献: Objective-C Runtimeプログラミングガイド

他のヒント

すみません、あなたの質問の一部を誤解します。アンダースコアで@synthesizeの部分を実行するなら、あなたはすべて良いです。IVARを明示的に定義する必要はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top