3

XCode が Apple のテンプレートで合成ステートメントを作成すると、次のように表示されます。

@synthesize ivar=_ivar;

だから私は単一のアンダースコアを取得し、誤ってそれらにアクセスしないようにするためにプロパティとは異なる名前をどのように ivar に付けるかなど...

コア データ プロジェクトを開始したばかりで、テンプレートで作成されたステートメントには次のものがあります。

@synthesize managedObjectContext=__managedObjectContext;

@synthesize managedObjectModel=__managedObjectModel;

@synthesize persistentStoreCoordinator=__persistentStoreCoordinator;

コア データ関連の ivar 名にアンダースコアが 2 つ付いているのはなぜですか? これは単なる Apple 構文ですか? それ以上のものがあるかどうか、またそれが私が知っておく必要があるものかどうかはわかりません-Googleはあまり役に立ちませんでした.

ありがとう!

4

2 に答える 2

4

先頭の二重アンダースコアは、コンパイラと言語ライブラリ専用に予約されているはずです。ただし、AppleはそれらをCoreDataにも使用することを決定しました。私たちは単なる人間の開発者は、二重の先頭の下線を使用するべきではありません。

于 2011-09-20T02:53:24.280 に答える
4

Objective C コンパイラはすべての変数名を同じように扱うため、2 つのアンダースコアは単なる規則です。ただし、ダブル (またはシングル) アンダースコアの後に大文字が続くものは、コンパイラが使用するために予約されています。

また、この質問への回答を確認してください。私が説明できるよりも詳細です。

于 2011-09-20T02:21:15.393 に答える