您的位置:首页 > 移动开发 > Objective-C

id和instancetype和NSObject

2016-01-14 22:28 274 查看
1.id是通用类型的指针,编译时不进行类型检查2.id和instancetype的相同点、不同点1)相同点都可以作为方法的返回类型2)不同点instancetype只能作为返回值;id可以做为返回值,也可以作为参数的类型instancetype可以返回和方法所在类相同类型的对象;id只能返回未知类型的对象3.NSObject和idNSObject对象会进行编译时检查(需要强制类型转换)id可以直接用,不需要强制类型转换id是动态类型,编译器不再检查类型id在objc.h中的定义:/// Represents an instance of a class.struct objc_object {Class isa OBJC_ISA_AVAILABILITY;};/// A pointer to an instance of a class.typedef struct objc_object *id;NSObject.h中,NSObject类的定义如下@interface NSObject <NSObject> {Class isa OBJC_ISA_AVAILABILITY;}+ (void)load;+ (void)initialize;- (instancetype)init;+ (instancetype)new;+ (instancetype)allocWithZone:(struct _NSZone *)zone;
...
参考两个类型都含有Class isa,但NSObject同时包含了一些其它的方法,并需要实现NSObject协议。 所以NSObject*可以用id来表示。但id不能用NSObject*来表示。 
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: