美文网首页
iOS 类和对象的区别

iOS 类和对象的区别

作者: CrystalZhu | 来源:发表于2020-02-10 17:00 被阅读0次

class 和 object 在Object-C的定义

typedef struct objc_class *Class;  //一个不透明含糊的类型,表示一个Object-C类
//对象即为表示类的实例
typedef struct objc_object{
     Class isa;
}*id;

objc_class结构体的实现

struct objc_class{
  struct objc_class *isa;
  struct objc_class *super_class;
  struct objc_ivar_list *ivars;
  struct objc_method_list **methodlist;
  struct objc_cache  *cache;
  struct objc_protocol_list *protocols;
  long version;
  long info;
  long instance_size;
  const char *name;
};
isa指针

是一个类型为objc_class指针,是和class一个类型的指针,那么我们是不是可以这样说:一个以objc_class指针指向的所有东西都可以当作一个objc对象来对待.

super_class父类

我们知道所有类都继承于NSObject或者NSProxy,那么NSObject是所以类的父类,NSObject和NSProxy的父类是null

name

const char *name一个C类型的字符串,用来表示类的名字
在运行时可以通过方法idobjc_getClass(constchar *aClassName)来得到这个类的名字,通过idObjc_getMetaClass(const char * aClassName)来得到该类的metaclass

version版本信息

默认值是0,可以通过运行时通过方法class_setVersion修改版本信息,通过class_getVersion来得到版本信息

info

供运行时提供的一些位标识符

instance_size

这个类实例变量的大小,内含了从父类继承下来的实例变量

ivars

用来存储每一个实例变量的地址

cache

用来存储最近使用方法,提高效率优先

protocols

用来存储声明遵守的正式协议

Person *p1 = [Person new];
[Person 方法名]  类方法
[p1 方法名]  对象方法

相关文章

  • 对象方法(实例方法) 类方法(静态方法)的区别

    参考资源 Objective-C中类方法、对象方法介绍及区别iOS---类方法(静态方法)和实例方法iOS 类方法...

  • iOS 类和对象的区别

    class 和 object 在Object-C的定义 objc_class结构体的实现 isa指针 是一个类型为...

  • Java面向对象

    Java和iOS的面向对象大体上没有什么区别,有几点需要注意: 抽象类 接口类 多继承 重载 对象 接口 包

  • oc对象实现图解

    ios第一篇(oc对象) ios类对象和元类对象以及对象的关系 类对象中存储的是对象的实例方法,属性,成员变量,协...

  • 类和对象的区别

    类是一个抽象的概念; 而对象是类抽象概念的实物表达; 打个比方: 比如水果摊进了一批水果(就好比是类); 然后就去...

  • 类和对象的区别

    1,类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Pers...

  • 类和 对象的区别

    作为初学者,比较容易混淆类和对象的概念。类是一个抽象的概念,对象则是类的具体实例。比如人是一个类,司马迁、李白、杜...

  • Python-类对象和实例对象的区别

    Python语言中类对象和实例对象是存在区别的,从类对象和实例对象的数据属性来看比较清晰。 类对象:Class o...

  • 面向对象:类和对象的区别

    在面向对象中,我们经常会遇到类和对象而且两者常常在一起使用,那抹怎样区分他们那,一起来看看吧! 1:类 1.1什么...

  • runtime---实例对象、类对象与元类对象&消息传递&消息转

    类对象与元类对象的区别和联系 类对象存储的是实例方法列表,元类对象存储的是类方法列表 实例对象是objc_obje...

网友评论

      本文标题:iOS 类和对象的区别

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