iOS 类01 - 类初探结构分析

300 阅读1分钟

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();
}
。。。。等等

待续!