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

Objective-C 獨有資料類型完整解析

     編輯:關於C語言

NSString / 字串常量

Objective-C 字串常量以 @ 開頭:@"Hello"、@"中文"。編譯器自動生成 NSString 實例,屬於類別簇,不可變。可變字串用 NSMutableString。

id 型別

typedef struct objc_object { Class isa; } *id;
  • 所有物件指標的通用型別,相當於 void* 但帶有 isa 指標支援動態綁定。
  • 宣告時不加星號:id obj = [[MyClass alloc] init];。
  • 可存放任何繼承自 NSObject 的實例。

BOOL / 布林值

typedef signed char BOOL;
#define YES ((BOOL)1)
#define NO  ((BOOL)0)
  • 底層為 signed char,佔 1 byte。
  • 慣用 YES/NO,判斷式可直接 if (flag)、if (!flag)。

SEL / 選擇器

  • 方法的唯一標識(編譯期產生),型別為 SEL,實際為 struct objc_selector*。
  • 取得:@selector(methodName:) 或 NSSelectorFromString(@"methodName:")。
  • 動態派發:[obj performSelector:sel withObject:arg]。
  • 不同類別可有同名方法,SEL 不綁定類別,故可跨類別呼叫同名方法。

Class / 類別物件

  • 每個類別本身也是一個物件,型別 Class。
  • 取得:[obj class] 或 [MyClass class]。
  • 常用方法:isKindOfClass:(含子類)、isMemberOfClass:(僅本類)、className(取類別名稱字串)。

nil / Nil

向 nil 發送訊息安全無效(返回 0/nil/0.0),無需像 C++ 檢查空指標。

類型對照表

符號定義用途
nil#define nil 0空物件指標,id、NSString* 等可賦值
Nil#define Nil 0空類別指標,Class 型別用
Objective-CC/C++ 對應備註
idvoid* (含 isa)通用物件指標
Classstruct objc_class*類別物件
SELstruct objc_selector*方法選擇器
BOOLsigned char1 byte
NSString*無直接對應不可變字串物件

實務建議

  • 盡量使用具體類別指標(NSString*、MyClass*)而非 id,編譯器可做型別檢查。
  • BOOL 變數命名建議加 is/has/should 前綴(如 isEnabled)。
  • SEL 搭配 respondsToSelector: 做安全動態呼叫。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved