刚开始学习 oc 的时候,对 oc 很感兴趣的就是那套 runtime 机制。觉得能把c 变成一套面向对象的机制,还是蛮厉害的。后来又学习了一下 runtime,其中对 oc 的类对象一直搞不清楚,尤其搞不清楚就是类也是一个对象这种说法。因为以前学习 c++的时候,学的就是类用来定义一个对象的,类是虚的,类只是一个定义。而在 oc 中类也是一个对象。
而且 oc 中,由于 runtime 机制把 oc 的代码编译成了c 的代码以后,类和对象其实就比较像了。对象和类都是数据结构,对象只定义了一个指向类的指针,类才定义了成员变量,成员方法,属性,协议之类的东东
在 oc 中,类是用来生成实例对象的,类中保存了实例对象所需的所有东东。当实例对象发送消息的时候,其实就是去自己所在的类中的方法类表中去查找。而类是有谁生成呢,类是有元类来生成的。因为类中虽然保存了成员方法,但是却没有保存类方法(类方法其实就是 C++中的静态方法),类方法是保存在元类中的。所以如果向类发送一个消息,那么类就会去相应的元类中寻找方法。
objective-c类对象的理解
最新推荐文章于 2021-08-05 18:13:07 发布