美文网首页OC 底层
iOS中id与NSObject * 和id<NSObjec

iOS中id与NSObject * 和id<NSObjec

作者: 傻傻小萝卜 | 来源:发表于2016-07-18 10:48 被阅读1149次

1.

这是id的定义,它就是一个指针,它可以指向的类型不仅局限于NSObject,

typedef struct objc_class *Class;

typedef struct objc_object {

Class isa;

} *id;

2.NSObject *就是NSObject类型的指针,它的范围小。

3.id<NSObject>是指针,它要求它指向的类型要实现NSObject protocol。但他和NSObject不是一个东西。

而NSObject类实现了NSObject接口,所以id<NSObject>的对象。

NSObject实现类似这样:

@interface <NSObject>{

Class isa;

}

如果我们来看看NSProxy的定义,你会发现,它不是继承自NSObject,但是却实现了NSObjecct接口,

NSProxy定义类似这样:

@interface NSProxy<NSObject>{

Class isa;

}

所以id可以指向NSProxy的对象。

相关文章

网友评论

    本文标题:iOS中id与NSObject * 和id<NSObjec

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