學(xué)習(xí)Class結(jié)構(gòu)體的同學(xué)都知道,iOS Class的結(jié)構(gòu)體如下圖所示:
類機(jī)構(gòu)體
而了解對(duì)象數(shù)據(jù)存儲(chǔ)的同學(xué)都知道:實(shí)例對(duì)象的實(shí)例變量是存在實(shí)例對(duì)象里的谍肤,實(shí)例方法是存在實(shí)例對(duì)象isa指向的類對(duì)象里,類方法是存在類對(duì)象isa指向的元類對(duì)象里哗伯,isa 指向和Class的繼承關(guān)系如下圖所示:
方法流程圖
當(dāng)Subclass 調(diào)用方法會(huì)沿著 Subclass(meta)-> Superclass(meta) ->RootClass(meta)->NSObject 查找方法荒揣,而根元類存的是類方法,NSObject 存的為實(shí)例方法焊刹,所以subClass 可以調(diào)用NSObject實(shí)例方法系任。而NSObject的父類為nil,故Subclass的實(shí)例不能調(diào)用NSObject的類方法虐块。