美文网首页
Objective-C 介绍

Objective-C 介绍

作者: 细雨听风 | 来源:发表于2015-09-29 15:04 被阅读71次

Objective-C objc_class 介绍

@interface NSObject{

Class isa  OBJC_ISA_AVAILABILITY;

}

它有一个isa属性,类型是Class.苹果已经将 ObjC runtime 代码开源了,我们下载下,看看Class到底是什么http://opensource.apple.com/tarballs/objc4/objc4-493.9.tar.gzobjc_class我们可以在文件里看到Class的定义

typedef struct objc_class *Class;

typedef struct objc_object {

Class isa;

} *id;

Class 是一个 objc_class 结构类型的指针, id是一个 objc_object 结构类型的指针.objc_class的定义可以在里找到

struct objc_class {

Class isa;

Class super_class;

const charchar *name;

long version;

long info;

long instance_size;

struct objc_ivar_list *ivars;

struct objc_method_list **methodLists;

struct objc_cache *cache;

struct objc_protocol_list *protocols;

} OBJC2_UNAVAILABLE;

接下来我们来看下每个属性的意思

isa

是一个 Objective-C Class 类型的指针. 实例对象有个isa的属性,指向Class, 而Class里也有个isa的属性, 指向meteClass. 这里就有个点, 在Objective-C中任何的类定义都是对象.

super_class

指向该类的父类, 如果该类已经是最顶层的根类(如 NSObject 或 NSProxy),那么 super_class 就为 NULL.

objc_getClass从一个字串返回一个类,look_up_class,先创建一个old_class对象,name赋值为这个字串,如果找到了,就返回old_class.看下old_class的结构就能看出name这个属性存的值就是类的名字(其实name不就是名字嘛)

version

类的版本信息,默认为0

info

供运行期使用的一些位标识。

instance_size

该类的实例变量大小

ivars

成员变量的数组

methodLists

方法定义的数组

objc_cache

指向最近使用的方法.用于方法调用的优化.

protocols

协议的数组

相关文章

网友评论

      本文标题:Objective-C 介绍

      本文链接:https://www.haomeiwen.com/subject/aigwcttx.html