【Objective-C】タイプコードおよび対応バイトサイズ
4739 ワード
周知のように,メソッドの違いはメソッド名に限らず,さらに重要なのはパラメータおよび戻り値タイプ,パラメータ個数,OCではこれらのものをtypeEncoding後にメソッドの記述typesを生成し,実行時メソッド呼び出しと伝達で使用する.
typeEncodingとは、戻り値タイプ、ターゲットオブジェクト、SEL、パラメータタイプ、encodeの後に生成される短い文字の集合であり、各タイプに対応する文字または文字の集合を以下に示す.
typeEncodingとは、戻り値タイプ、ターゲットオブジェクト、SEL、パラメータタイプ、encodeの後に生成される短い文字の集合であり、各タイプに対応する文字または文字の集合を以下に示す.
タイプコードtypeEncode
{
BOOL = B;
CGFloat = d;
CGPoint = "{CGPoint=dd}";
CGRect = "{CGRect={CGPoint=dd}{CGSize=dd}}";
CGSize = "{CGSize=dd}";
CGVector = "{CGVector=dd}";
Class = "#";
NSInteger = q;
NSRange = "{_NSRange=QQ}";
SEL = ":";
block = "@?";
bool = B;
char = c;
double = d;
float = f;
id = "@";
"id*" = "^@";
int = i;
long = q;
"long long" = q;
short = s;
"size_t" = Q;
"unsigned int" = I;
"unsigned long" = Q;
"unsigned long long" = Q;
"unsigned short" = S;
void = v;
"void *" = "^v";
"void*" = "^v";
}
対応バイトサイズ(x 86_64アーキテクチャ):
{
BOOL = 1;
CGFloat = 8;
CGPoint = 16;
CGRect = 32;
CGSize = 16;
CGVector = 16;
Class = 8;
NSInteger = 8;
NSRange = 16;
SEL = 8;
bool = 1;
char = 1;
double = 8;
float = 4;
id = 8;
"id *" = 8;
int = 4;
long = 8;
"long long" = 8;
short = 2;
"size_t" = 8;
"unsigned int" = 4;
"unsigned long" = 8;
"unsigned long long" = 8;
"unsigned short" = 2;
void = 1;
"void *" = 8;
"void*" = 8;
}