美文网首页
iOS 类对象可以调用NSObject实例方法,实例对象不能调用

iOS 类对象可以调用NSObject实例方法,实例对象不能调用

作者: 大白龙 | 来源:发表于2019-08-02 15:37 被阅读0次

学习Class结构体的同学都知道,iOS Class的结构体如下图所示:

类机构体

而了解对象数据存储的同学都知道:实例对象的实例变量是存在实例对象里的,实例方法是存在实例对象isa指向的类对象里,类方法是存在类对象isa指向的元类对象里,isa 指向和Class的继承关系如下图所示:

方法流程图

当Subclass 调用方法会沿着 Subclass(meta)-> Superclass(meta) ->RootClass(meta)->NSObject 查找方法,而根元类存的是类方法,NSObject 存的为实例方法,所以subClass 可以调用NSObject实例方法。而NSObject的父类为nil,故Subclass的实例不能调用NSObject的类方法。

相关文章

  • iOS 类对象可以调用NSObject实例方法,实例对象不能调用

    学习Class结构体的同学都知道,iOS Class的结构体如下图所示: 而了解对象数据存储的同学都知道:实例对象...

  • 再论静态方法和类方法

    实例对象可以调用实例方法、类方法、静态方法 类对象只能调用类方法、静态方法

  • Swift 中的方法声明

    实例方法 类方法 静态方法 实例方法由实例对象进行调用;类方法和静态方法由类对象进行调用

  • Java se - 实例方法,类方法

    定义 实例方法:可以对当前对象的实例变量进行操作,也可以对类变量进行操作,由实例对象调用。类方法:不能访问实例变量...

  • 类中的方法

    1.实例方法的调用方式 实例对象.实例方法() 类对象.实例方法(实例对象) 例如: class Student ...

  • 底层原理:Category

    实例对象的isa指向类对象,当调用对象方法时,通过实例对象的isa找到类对象,最后找到对象方法的实现进行调用,分类...

  • 类方法和实例方法理解

    1,类方法可以调用类方法。 2,类方法不可以调用实例方法,但是类方法可以通过创建对象来访问实例方法。 3,类方法不...

  • 方法、闭包

    方法 枚举、结构体、类都可以定义实例方法、类型方法 实例方法(Instance Method):通过实例对象调用 ...

  • Swift-OOP-Method

    枚举、结构体、类都可以定义实例丰富、类型丰富 实例方法:通过实例对象调用 类型方法:通过类型调用,用static或...

  • 对象、类对象、元类对象&消息传递机制

    类对象:存储实例方法列表等信息。 元类对象:存储类方法列表等信息。 调用的类方法没有对应的实现,则会调用同名的实例...

网友评论

      本文标题:iOS 类对象可以调用NSObject实例方法,实例对象不能调用

      本文链接:https://www.haomeiwen.com/subject/krzkdctx.html