a) instance的isa指向class
1) 當(dāng)調(diào)用對象方法時(shí)适秩,通過instance的isa找到class吁朦,最后找到對象方法的實(shí)現(xiàn)進(jìn)行調(diào)用优床;
2) 那么為什么不直接拿到class對象服球,來調(diào)用這個(gè)對象方法埠巨?
答:OC語法設(shè)計(jì)仰剿,達(dá)到面向?qū)ο蟮哪康?
b) class的isa指向meta-class
1) 當(dāng)調(diào)用類方法時(shí)备徐,通過class的isa找到meta-class全陨,最后找到類方法的實(shí)現(xiàn)進(jìn)行調(diào)用爆班;
c) meta-class的isa指向基類的meta-class
2.class對象的superclass指針
a) superclass(繼承)
b) 類對象的superclass指針指向的是它父類的類對象
c) 當(dāng)Student的instance對象調(diào)用Person的對象方法時(shí),會先通過isa找到Student的class烤镐,然后通過superclass找到Person的class蛋济,最后找到對象方法的實(shí)現(xiàn)進(jìn)行調(diào)用
3.meta-class對象的superclass指針
a) superclass(繼承)
b) 元類對象的superclass指針指向的是它父類的元類對象
c) 當(dāng)Student的class對象調(diào)用Person的類方法時(shí),會先通過isa找到Student的meta-class炮叶,然后通過superclass找到Person的meta-class碗旅,最后找到類方法的實(shí)現(xiàn)進(jìn)行調(diào)用
4.isa&superclass總結(jié)
a) instance的isa指向class
b) class的isa指向meta-class
c) meta-class的isa指向基類的meta-class
d) class的superclass指向父類的class(如果沒有父類,superclass指針為nil)
e) meta-class的superclass指向父類的meta-class(基類的meta-class的superclass指向基類的class)
f) instance調(diào)用對象方法的軌跡
1) isa找到class镜悉,方法存在就調(diào)用祟辟,不存在,就通過superclass找到父類
g) class調(diào)用類方法的軌跡
1) isa找到meta-class侣肄,方法存在就調(diào)用旧困,不存在,就通過superclass找到父類稼锅,如果基類的meta-class也沒有會通過superclass找到基類的class然后找有沒有