id指针是一个万能指针任意的OC对象都可以指向 已经typedef *了 所以不需要 *
id和NSObject的区别
1.不会进行编译检查
NSObject *obj = [A new];
id id1 = [A new];
2.不会进行运行检查
NSObject *obj = [A new];
[obj funa];
[(A)obj funa];
id id1 = [A new];
[id1 funa];
3.不能使用点语法
id1.name = @"abc";
id1.setName = @"name";
instancetype(当前类类型)
如果方法返回值是instancetype类型 代表方法的返回值是当前这个类的对象
常见使用
@interface A : NSObject
{
}
+(instancetype) create;
@end;
@implementation A
{
}
+(instancetype) create
{
return [self new];
}
@end;
@interface B : A
@end;
@implementation B
@end;
A *a = [A create];
B *b = [B create];
C *c = [A create];
|