您的位置:首页 > 编程语言 > C语言/C++

oc语言中的isa指针以及其面向对象语言的设计原理

2015-11-15 22:42 309 查看
面向对象语言:即为:万物皆对象,所以一切的类型都应该是对象或类,但是很多语言都没有完全遵循面向对象的原则。

eg:ruby中int类型都是类型,所以都是对象,严格的面向对象类型;而oc中int,double都是基本的数据类型,并不是面向对象的类型,所以没有完全遵循面向对象的理念。

不过oc语言大多都是遵循的,并且我们经常使用的来概念。

有必要了解一下面向对象语言的设计原理:

必须了解一下对象或者类中的一个属性isa指针。




 

上面就是基本的类和元类之间的关系 和 oc语言中的元类之间的继承关系。

总结:(图一)

1、每一个对象本质上都是一个类的实例。其中类定义了成员变量和成员方法的列表。对象通过对象的isa指针指向类

2、每一个类本质上都是一个对象,类其实是元类(meteClass)的实例。元类定义了类方法的列表。类通过类的isa指针指向元类。

3、所有的元类最终继承一个根元类,根元类isa指针指向本身,形成一个封闭的内循环。

(图二)
1、NSObject的类定义了实例方法,eg:-
(id)init 方法 - (void)dealloc 方法

2、NSOBject的元类定义了类方法,eg:+(id)alloc方法、+(void)load
方法和 +(void)initialize方法。

3、NSObject的元类继承NSObject类,所以NSObject类是所有类的根,因此NSObject中定义的实例方法可以被所有的对象调用,eg:-
(id)init 方法 - (void)dealloc 方法

4、NSObject的元类的isa指向自己。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: