1前沿.
C和OC最大的区别就是面向对象编程。OC作为面向对象编程语言,那么肯定具备面向对象特征。面向对象程序设计过程中有俩个重要概念:
类(class)和对象(object,也称为实例instance),类是某一批对象的抽象,对象才是一个具体存在的实体。
OC中定义类需要分俩个步骤:
接口部分和实现部分。接口部分定义该类包含的成员变量和方法;
实现部分为该类的方法提供实现。
类也是对象->元类,类的归属来自元类,编译器自动完成并且初始化。
同一个类在内存中只会存在一份。以NSObject为模版来创建。(NSObject来自根类,也叫根元类)。
类与类是存在继承的关系,NSObject继承与**nil**,类下层来自Objc_class (来自class)。,其继承- objc-object,
实例对象之间不存在继承关系,来自Objc_object (来自根对象)模版。
因此。对象 类 元类 都有isa,都是Objc_object(C/C++)结构体。为模版继承创建出来.因此诞生了下图:
总结:
万物皆是对象,Objc_class与objc-object里面有默认的属性是isa,同时也继承Objc_class与objc-object,所有已他们为模版所创建的类,对象都有isa.
对象的内存,充满属性,类的内存分布:
// Class ISA; Class superclass;
cache_t cache;
class_data_bits_t bits
class_rw_t *data() const {
return bits.data();
}
。。。。等等
待续!