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];// 这时候,我们在使用上边的方法生成对象的时候,就会提示类型信息,并且不会报类型不匹配警告。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容