objective-cで@マークから始まるコマンド一覧

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”が実は同じコンパイラディレクティブの命令でびっくり。