1.當(dāng)參數(shù)obj為Object實(shí)例對(duì)象
object_getClass(obj)與[obj class]輸出結(jié)果一直碗暗,均獲得isa指針又憨,即指向類(lèi)對(duì)象的指針。
2.當(dāng)參數(shù)obj為Class類(lèi)對(duì)象
object_getClass(obj)返回類(lèi)對(duì)象中的isa指針,即指向元類(lèi)對(duì)象的指針瞄桨;[obj class]返回的則是其本身。
3.當(dāng)參數(shù)obj為Metaclass類(lèi)對(duì)象
object_getClass(obj)返回元類(lèi)對(duì)象中的isa指針讶踪,因?yàn)樵?lèi)對(duì)象的isa指針指向根類(lèi)芯侥,所有返回的是根類(lèi)對(duì)象的地址指針;[obj class]返回的則是其本身乳讥。
4.obj為Rootclass類(lèi)對(duì)象
object_getClass(obj)返回根類(lèi)對(duì)象中的isa指針柱查,因?yàn)楦?lèi)對(duì)象的isa指針指向Rootclass‘s metaclass(根元類(lèi)),即返回的是根元類(lèi)的地址指針云石;[obj class]返回的則是其本身唉工。
總結(jié):
經(jīng)上面初步的探索得知,object_getClass(obj)返回的是obj中的isa指針汹忠;而[obj class]則分兩種情況:一是當(dāng)obj為實(shí)例對(duì)象時(shí)淋硝,[obj class]中class是實(shí)例方法:- (Class)class,返回的obj對(duì)象中的isa指針宽菜;二是當(dāng)obj為類(lèi)對(duì)象(包括元類(lèi)和根類(lèi)以及根元類(lèi))時(shí)奖地,調(diào)用的是類(lèi)方法:+ (Class)class,返回的結(jié)果為其本身赋焕。
更多:iOS面試題合集