首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Objective-C 數據類型與格式化符號速查表

     編輯:關於C語言

說明

原文僅包含一張圖片,無文字內容。此處提供 Objective-C 常用數據類型與 NSLog/printf 格式化符號對照表,作為補充參考。

基本數據類型對照

Objective-C 類型底層 C 類型位寬格式化符號示例
NSIntegerlong / int32/64位隨架構%ld / %dNSInteger i = 42;
NSUIntegerunsigned long / unsigned int32/64位%lu / %uNSUInteger u = 100;
CGFloatfloat / double32/64位%f / %gCGFloat f = 3.14;
BOOLsigned char8位%d (0/1)BOOL b = YES;
unicharunsigned short16位%hu / %Cunichar c = '中';

Foundation 常用對象類型

類型描述NSLog 格式化說明
NSString*不可變字符串%@調用 description 方法
NSNumber*數值包裝%@自動推導數值類型
NSArray*有序集合%@打印所有元素
NSDictionary*鍵值映射%@打印鍵值對
NSDate*日期時間%@標準 ISO8601 格式
NSURL*資源定位符%@打印 URL 字符串
id任意對象指針%@通用對象打印
Class類對象%@打印類名
SEL選子(方法名)%@打印方法名如 setName:

指針與地址打印

類型格式化符號示例
對象指針 id/NSObject*%pNSLog(@"ptr=%p", obj);
C 指針 void*%pprintf("ptr=%p", ptr);

平台相關注意事項

  • 32 位 vs 64 位:NSInteger/NSUInteger/CGFloat 在 64 位下為 long/double,32 位下為 int/float。統一使用 %ld/%lu/%f 並在編譯期通過宏適配:

#if __LP64__
#define NSIntegerFormat "%ld"
#define NSUIntegerFormat "%lu"
#else
#define NSIntegerFormat "%d"
#define NSUIntegerFormat "%u"
#endif

NSLog(@"value: " NSIntegerFormat, myNSInteger);

NSLog vs printf

  • NSLog:輸出到系統日誌(Console.app 可見),自動帶時間戳、進程名、線程號,**僅支援 %@、%ld 等少量格式**,不支援 %zu、%td 等 C99 格式。
  • printf/fprintf(stderr,...):標準 C 輸出,格式完整支援,高性能,適合熱路徑日誌。

總結

Objective-C 類型系統建立在 C 之上,掌握底層 C 類型對應關係是正確格式化輸出的關鍵。統一使用 %@ 打印對象,基本類型根據架構選擇 %ld/%lu/%f,調試指針用 %p。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved