id,instancetype,__kindof的使用--笔记

__kindof是iOS9出来的关键字。
id好处:可以调用任何对象方法
id不足:不能使用点语法,不能做编译检查.
Xcode5之前,返回id
instancetype:会自动识别当前类的对象
// xcode5:instancetype
xcode7:__kindof:表示当前类或者子类
例子:创建两个类 person和subperson,subperson继承person
person类

@interface Person : NSObject
-( id )person;
@end
@implementation Person
 (id)person
{
return [[self alloc] init];
}
@end

subperson类什么也不做继承person就可以了
比如现在在viewController里面创建subperson这个类
[subperson person]
对着person按esc键提示是返回id 。此时 [subperson person] 返回的是id ,所以可以使用其他方法。比如
[[subperson person] setimage:],
如果person类改成
person类

@interface Person : NSObject
* ( instancetype )person;
@end
@implementation Person
* (instancetype )person
{
return [[self alloc] init];
}
@end

再创建subperson类
[subperson person] ,对着person按esc键提示是返回instancetype ,此时返回值是可以识别点语法的,比如在person加一个方法-(void)pop,此时[subperson person].ppp 是可以用的,而如果返回值写的是id就不行。
__kindof用在返回值都知道的时候,比如
person类

@interface Person : NSObject
 ( __kindof person*)person;
@end
@implementation Person
 (__kindof person*)person
{
return [[self alloc] init];
}
@end

对着person按esc键提示是返回的是person,用了__kindof之后就能让其他人明确的知道返回的是person这个类。

你可能感兴趣的:(id,instancetype,__kindof的使用--笔记)