objective-cでよく出てくる”@”から始まるコマンドってどう言うのがあるのかなと思って調べて見ました。 こういう”@”から始まるコマンドはコンパイラディレクティブというらしいです。
宣言/定義関係
意味
@interface
クラスやカテゴリのプロトタイプ宣言の開始
@implementation
クラスやカテゴリの実態の宣言の開始
@protocol
プロトコル(delegateなど)の宣言の開始
@end
@interface, @implementation, @protocolで開始した宣言を終了する
@class
クラスがどこか他の所で定義されているよという宣言
クラス変数の有効範囲関係
意味
@private
自分のクラスでのみ有効
@protected
自分のクラスと、自分を継承したクラスでのみ有効
@public
すべての場所で有効
例外関係
意味
@try
例外を捉えるブロックの開始宣言
@throw
例外を投げる
@catch()
@throwで投げられた例外を捉える
@finally
例外があってもなくても処理するブロックの宣言
その他
意味
@selector(method)
method関数を示すselectorを返す
@protocol(name)
nameで指定されたプロトコルを返す
@encode(spec)
specに指定された型構造体をエンコードする文字の並びを返す
@defs(class)
Classの内部データ構造を返す
@”string”
NSStringオブジェクトの簡易宣言
@”string1”@”string2”@”string3”…
NSStringオブジェクトの簡易宣言
すべての文字列が連結されたNSStringができる
@synchronized()
排他的なブロックの宣言
よくみる@interface系と@”string”が実は同じコンパイラディレクティブの命令でびっくり。