gaojingsong 阅读(20) 评论(0)
Objective-C中有两个NSObject,一个是NSObject类,另一个是NSObject协议。而其中NSObject类采用
了NSObject协议。对于NSObject来说,我们可是非常熟悉的了,它是objc中大多数类的基类。注意,并不
是所有的类都继承于NSObject,比如NSProxy类。 我们先来明确几个计算机概念,位(bit)、字节(byte)、字 位(bit) 计算机内部数据储存的最小单位,我们所谓的几位,就是常见的二进制中的一位。 字节(byte) 计算机中数据处理的基本单位,计算机中以字节为单位存储和解释信息。一个字节8bit 字(word) 计算机进行数据处理时,一次存取、加工和传送的数据长度称为字。和它相关的一个概念叫字长,是标识字的bit数,
在32位机器中,计算机总线一次传输32位=4字节。字64位机器中,计算机总线一次传输64位=8字节。所以64位机
比32位机速度快很多 内存中的计算都是用bit来标识的,可能是因为内存本身就是稀缺资源,并没有很大,存储的内容也不会过大。 Objective-C 是一门面向对象的编程语言。每一个对象都是一个类的实例。在 Objective-C 语言的内部,每一个
对象都有一个名为 isa 的指针,指向该对象的类。每一个类描述了一系列它的实例的特点,包括成员变量的列表,
成员函数的列表等。每一个对象都可以接受消息,而对象能够接收的消息列表是保存在它所对应的类中。 isa到底是什么呢?官方介绍是这样的:
    Every object is connected to the run-time system through itsisa instance variable,
inherited from the NSObject class.isa identifies the object's class; it points to a
structurethat's compiled from the class definition. Through isa, anobject can find
whatever information it needs at run timesuch asits place in the inheritance hierarchy,
the size and structure ofits instance variables, and the location of the
methodimplementations it can perform in response to messages.    可见,一个对象(Object)的isa指向了这个对象的类(Class),而这个对象的类(Class)的isa指向了metaclass。
这样我们就可以找到静态方法和变量了。 Objective-C 对象都是 C 语言结构体,所有的对象都包含一个类型为 isa 的指针,那么你可能确实对 ObjC 的底层有所知,
不过现在的 ObjC 对象的结构已经不是这样了。代替 isa 指针的是结构体 isa_t, 这个结构体中"包含"了当前对象指向的类的信息