iOS中__kindof关键字(iOS_9)

__kindof(iOS 9 新关键字)

例如:

- (nonull __kindof UITableViewCell)......

// xoce 5 才出instancetype

__kindof:表示相当于当前类或者他的子类

类的设计历史

id:可以调用任何对象方法,不能进行编译检测(运行时容易找不到方法)

instancetype:自动识别当前类的对象

@interface Person : NSObject 
  + (isntancytype)person;
@end
  
@interface SubPerson : Person
  
@end
  
// 创建SubPerson类型的对象
  SubPerson *p = [SubPerson person];// 这种情况下,当我们调用person类方法来创建对象的时候,会看到提示的是instancetype person,而没有提示类信息。

// 当我们使用下边的情况时

@interface Person :NSObject
  + (Person *)person;
@end
// 这时候创建对象
SubPerson *p = [SubPerson person];// 这种情况下,当我们调用person方法的时候会提示类型信息为Person类型,但是,这时候整条语句会提示类型不匹配警告,因为左侧为SubPerson,右侧为Person,所以我们使用下边这种情况。

// 如果我们使用下边的情况
@interface Person :NSObject
  + (__kindof Person *)person;
@end
  
SubPerson *p = [SubPerson person];// 这时候,我们在使用上边的方法生成对象的时候,就会提示类型信息,并且不会报类型不匹配警告。

你可能感兴趣的:(iOS中__kindof关键字(iOS_9))