當前位置:編程學習大全網 - 源碼下載 - iOS面試題:class方法和objc_getClass方法有什麽區別?

iOS面試題:class方法和objc_getClass方法有什麽區別?

1.當參數obj為Object實例對象

object_getClass(obj)與[obj class]輸出結果壹直,均獲得isa指針,即指向類對象的指針。

2.當參數obj為Class類對象

object_getClass(obj)返回類對象中的isa指針,即指向元類對象的指針;[obj class]返回的則是其本身。

3.當參數obj為Metaclass類對象

object_getClass(obj)返回元類對象中的isa指針,因為元類對象的isa指針指向根類,所有返回的是根類對象的地址指針;[obj class]返回的則是其本身。

4.obj為Rootclass類對象

object_getClass(obj)返回根類對象中的isa指針,因為跟類對象的isa指針指向Rootclass‘s metaclass(根元類),即返回的是根元類的地址指針;[obj class]返回的則是其本身。

總結:

經上面初步的探索得知,object_getClass(obj)返回的是obj中的isa指針;而[obj class]則分兩種情況:壹是當obj為實例對象時,[obj class]中class是實例方法:- (Class)class,返回的obj對象中的isa指針;二是當obj為類對象(包括元類和根類以及根元類)時,調用的是類方法:+ (Class)class,返回的結果為其本身。

更多: iOS面試題合集

  • 上一篇:Php,談談程序源代碼
  • 下一篇:超級跑跑遊戲界面壹閃而過 無法正常運行遊戲
  • copyright 2024編程學習大全網