Objective-C @encode關鍵字

來源:互聯網
上載者:User

1、如果你想知道NSNumber中具體的資料類型,那麼@encode關鍵字就派上用場了。

使用@encode(aType) 可以返回該類型的C字串,用const char *表示。比如 @encode(int) 返回的是 i;@encode(float) 返回的是 f。

然後通過NSValue中的 objCType 方法返回的const char *與上面的對比就OK了。使用strcmp按ASCII值大小相比較。

int a = 10;NSNumber *number = [NSNumber numberWithInt:a];if (strcmp([number objCType], @encode(int)) == 0) {      int result = [number intValue];      NSLog(@"%d", result);}

2、Objective-C 的資料類型,甚至自訂類型、函數或方法的元類型,都可以使用 ASCII 編碼。

        NSLog(@"int        : %s", @encode(int));        NSLog(@"float      : %s", @encode(float));        NSLog(@"float *    : %s", @encode(float*));        NSLog(@"char       : %s", @encode(char));        NSLog(@"char *     : %s", @encode(char *));        NSLog(@"BOOL       : %s", @encode(BOOL));        NSLog(@"void       : %s", @encode(void));        NSLog(@"void *     : %s", @encode(void *));                NSLog(@"NSObject * : %s", @encode(NSObject *));        NSLog(@"NSObject   : %s", @encode(NSObject));        NSLog(@"[NSObject] : %s", @encode(typeof([NSObject class])));        NSLog(@"NSError ** : %s", @encode(typeof(NSError **)));                int intArray[5] = {1, 2, 3, 4, 5};        NSLog(@"int[]      : %s", @encode(typeof(intArray)));                float floatArray[3] = {0.1f, 0.2f, 0.3f};        NSLog(@"float[]    : %s", @encode(typeof(floatArray)));                typedef struct _struct {            short a;            long long b;            unsigned long long c;        } Struct;        NSLog(@"struct     : %s", @encode(typeof(Struct)));

結果是:

int        : ifloat      : ffloat *    : ^fchar       : cchar *     : *BOOL       : cvoid       : vvoid *     : ^vNSObject * : @NSObject   : {NSObject=#}[NSObject] : #NSError ** : ^@int[]      : [5i]float[]    : [3f]struct     : {_struct=sqQ}

參考:http://nshipster.com/type-encodings/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.