-
對(duì)于id類(lèi)型的變量,調(diào)用任何方法都能夠通過(guò)編譯(調(diào)用不存在的方法時(shí)候會(huì)拋出運(yùn)行時(shí)錯(cuò)誤)
id類(lèi)型可以存儲(chǔ)任何類(lèi)型的對(duì)象,無(wú)法通過(guò)—>來(lái)獲取類(lèi)的實(shí)例變量和方法。
-
id類(lèi)型和定義了為其他類(lèi)型的對(duì)象可以相互賦值
賦值操作包括=
賦值,傳參數(shù),和返回值。
-
強(qiáng)類(lèi)型變量(靜態(tài)類(lèi)型),如果調(diào)用類(lèi)或者父類(lèi)中不存在的方法,編譯器會(huì)拋出警告
-
若是靜態(tài)類(lèi)型變量,子類(lèi)型的實(shí)例變量可以賦值給父類(lèi)的實(shí)例變量
-
若是靜態(tài)類(lèi)型變量,父類(lèi)型的實(shí)例變量不可以賦值給子類(lèi)的實(shí)例變量
-
判斷哪個(gè)類(lèi)的方法被執(zhí)行,需要查看實(shí)際執(zhí)行這個(gè)變量的類(lèi)型(動(dòng)態(tài)性)
-
id類(lèi)型
為什么id 類(lèi)型 不是 *id 呢?
看objc/objc.h
中的定義
/// A pointer to an instance of a class.
typedef struct objc_object *id;
A pointer to an instance of a class.意思是指 id是指向類(lèi)實(shí)例的一個(gè)指針,所以id本身就是一個(gè)指針,不需要加*號(hào)了。