關於OC對象種類的分類

OC對象的種類

Objective-C中的對象,主要能夠分3種: instance對象(實例對象)、class對象(類對象)、meta-class對象(元類對象)spa

instance對象

instance對象就是經過類alloc出來的對象,每次經過alloc都會產生新的instance對象 instance對象在內存中存儲的信息包括isa指針、具體成員變量的值3d

class對象

每一個類在內存中有且只有一個class對象 call對象在內存中存儲的信息主要包括:isa指針、superclass指針、類的屬性信息(@property)、類的對象方法信息(instance method)、類的協議信息(protocol)、類的成員變量信息(ivar)指針

meta-class

objectMetaClass是NSObject的meta-class對象(元類對象),每一個類在內存中有且只有一個meta-class對象。meta-class對象和class對象的內存結構是同樣,可是用途不同,在內存中存儲的信息主要存儲isa指針、superclass指針、類的類方法信息code

能夠經過以下代碼獲取Class對象的元類:對象

Class objectClass = object_getClass([NSObject class]);

isa指針

instance的isa指向class

當調用對象方法時,經過instance的isa找到class,最後找到對象方法的實現進行調用blog

class的isa指向meta-class

當調用類方法時,經過class的isa找到meta-class,最後找到類方法的實現進行調用內存

class對象的superclass指針

當Student的instance對象要調用Person的對象方法時,會先經過isa找到Student的class, 而後經過superclass找到Person的class,最後找到對象方法的實現進行調用get

meta-class對象的superclass指針

當Student的class要調用Person的類方法時,會先經過isa找到Student的meta-class,而後經過superclass找到Person的meta-class,最後找到類方法的實現進行調用class

相關文章
相關標籤/搜索