1. ホーム
  2. objective-c

[解決済み] objective-cの@マークは何を表しているのですか?

2022-05-30 17:33:14

質問

objective-cを学習しているのですが、@という記号によくぶつかります。これはさまざまなシナリオで使用されます。たとえば、文字列の先頭やアクセサメソッドを合成するために使用されます。

objective-cで@記号はどのような意味ですか?

どのように解決するのですか?

この @ 文字はCやC++の識別子には使われないので、他の言語のキーワードと衝突しない方法でObjective-C言語のキーワードを導入するために使用されます。 これにより、言語のquot;Objective"部分がCまたはC++部分と自由に混ざり合うことができます。

したがって、ごく少数の例外を除いて、いつでも @ を見るときは、C や C++ のコンストラクトではなく、Objective-C のコンストラクトを見ていることになります。

主な例外は id , Class , nil そして Nil を持つことがあっても、一般に言語キーワードとして扱われます。 typedef または #define を後ろにつけることができます。 例えば、コンパイラは実際には id を特別に扱い、宣言に適用するポインタ型変換ルールや、GC書き込みバリアを生成するかどうかの判断に使用します。

他の例外は in , out , inout , oneway , byref そして bycopy これらは分散オブジェクトをより効率的にするために、メソッドのパラメータと戻り値の型にストレージクラスのアノテーションとして使用されます。 (これらはランタイムから利用可能なメソッドシグネチャの一部となり、DOはそれを見てトランザクションの最適なシリアライズ方法を決定します)。 また @property 宣言の中にも属性があります。 copy , retain , assign , readonly , readwrite , nonatomic , getter そして setter の属性セクションの中だけで有効です。 @property 宣言の属性セクション内でのみ有効です。