TOP - Objective-C - @encode

指定された型指定式をエンコードした文字列を生成します。

@encode(式1)
式1   : エンコードする型を指定した式

・生成される型コード
c : char
i : int
s : short
l : long (64ビット・プログラムの32ビット量)
q : long 又は long long (実装環境によると思われる)
C : unsigned char
I : unsigned int
S : unsigned short
L : unsigned long
Q : unsigned long 又は unsigned long long (実装環境によると思われる)
f : float
d : double
v : void
* : 文字列(char *)
@ : object
# : class object (Class)
: : method selector (SEL)

[array type]   : array
{name=type...} : 構造体
(name=type...) : union
bnum            : numビットのビット・フィールド
^type           : typeへのポインタ
?               : 未知のタイプ

    ※ この表はXCodeデベロッパドキュメントのObjective-C Runtime Programming Guideを引用した内容となりますが、
       メモとしての利用を重視するため、一部特記事項などを省略してあります。

(例)
※ Xcodeで生成される「***_Prefix.pch」などのファイルの内容は記載しません。

#import <Foundation/Foundation.h>

struct test_struct {
    char test_char;
    int test_int;
    short test_short;
    long test_long;
    unsigned char test_uchar;
    unsigned int test_uint;
    unsigned short test_ushort;
    unsigned long test_ulong;
    float test_float;
    double test_double;
    char *test_chars;
};

int main (void)
{
    NSLog(@"char           %s", @encode(char));
    NSLog(@"int            %s", @encode(int));
    NSLog(@"short          %s", @encode(short));
    NSLog(@"long           %s", @encode(long));
    NSLog(@"unsigned char  %s", @encode(unsigned char));
    NSLog(@"unsigned int   %s", @encode(unsigned int));
    NSLog(@"unsigned short %s", @encode(unsigned short));
    NSLog(@"unsigned long  %s", @encode(unsigned long));
    NSLog(@"float          %s", @encode(float));
    NSLog(@"double         %s", @encode(double));
    NSLog(@"char *         %s", @encode(char *));
    NSLog(@"void           %s", @encode(void));
    NSLog(@"NSObject       %s", @encode(NSObject));
    NSLog(@"struct         %s", @encode(struct test_struct));

    return 0;
}

実行結果
char           c
int            i
short          s
long           q
unsigned char  C
unsigned int   I
unsigned short S
unsigned long  Q
float          f
double         d
char *         *
void           v
NSObject       {NSObject=#}
struct {test_struct=cisqCISQfd*}


Copyright(C) 2006-2013 CLAYPOT. All Rights Reserved.