简介

__kindof是苹果声明的一个新特性,它是和Nullability Annotations 以及Generics 一起在xcode7中出现的。本文将对它进行详细介绍:

使用方法

假如我们声明了如下属性:

@property (nonatomic, strong) NSArray *viewCollection;

看属性名我们会认为它是元素为UIView的数组,但这只是猜测,它并不能保证这个数组的元素就是UIView,除非通过阅读完整的代码来确认。

这种情况下,我们就可以使用泛型和__kindof来解决这个问题。

使用泛型,我们可以这样声明这个数组:

@property (nonatomic, strong) NSArray<UIView *> *viewCollection;

这样我们知道这个数组被指定了元素为UIView类型。

但是呢,这样声明的数组它只能包含UIView类型的元素,如果元素被赋值为UIWebView或UIButton这样的子类型,编译器就会报警告⚠️。

为了解决这个问题,__kindof就应运而生。

@property (nonatomic, strong) NSArray<__kindof UIView *> *viewCollection;

用这种结构声明,这个数组就可以包含UIView以及UIView的子类型,例如UIWebView或UIButton。

我们开发人员应该尽可能地去使用OC的新特性。像__kindof就可以帮助我们提高代码质量和明确代码意图,使用泛型和__kindof会使代码更严谨,这对我们的代码和应用是大有益处滴!!

原文链接:https://happyteamlabs.com/blog/how-to-use-__kindof-in-objective-c/

OC中__kindof的用法相关推荐

  1. oc 中随机数的用法(arc4random() 、random()、CCRANDOM_0_1()

    oc 中随机数的用法(arc4random() .random().CCRANDOM_0_1() 1).arc4random() 比较精确不需要生成随即种子 使用方法 : 通过arc4random() ...

  2. php字典遍历,OC中的遍历数组和字典

    什么是遍历 ? 最近总有刚接触编程的朋友问我什么是遍历? 那是用来干什么用的? 今天就来解释一下遍历以及在OC中的具体用法 在众多计算机程序语言中,数组是必不可少的数据类型.而所谓遍历就是沿着某条搜索 ...

  3. OC中的NSArray和NSMutableArray、NSDictionary和NSMutableDictionary用法

    一:NSArray 和NSMutableArray 1: NSArray:不可变数组 NSArray是OC中使用的数组,只能用来存放OC对象,不能存放非OC对象如基本数据类型 它使不可变的,一旦初始化 ...

  4. OC中description、 SEL、类本质、self和super用法

    一:description方法 description有对象方法和类方法两种,(是NSObject类的方法) 1,-description(对象方法) 使用NSLog和@%输出某个对象时,会调用对象的 ...

  5. 2015.12.23 OC中的字符串(NSStringNSMutableString) 数组(NSArrayNSMutableArray)

    字符串(NSString&NSMutableString) 在OC中的字符串可分为两种:不可变字符串(NSString)和不可变字符串(NSMutableString).从字面上就可以理解这两 ...

  6. 一起Talk IOS吧(第八回 OC中复合类型的代码演示)

    看官们,我们在第三回中介绍了OC中的复合类型,有看官说介绍的不够详细,因此我使用图形的方式对所有基本类型做了总结,请参考以下图片中的内容. 看完类型的总结后,我们将通过具体的代码来演示如何使用这些类型 ...

  7. mysql中change用法,mysql 中alter的用法以及一些步骤

    mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...

  8. mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法

    Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...

  9. 【C++】C/C++ 中 static 的用法全局变量与局部变量

    C/C++ 中 static 的用法全局变量与局部变量 目录 1. 什么是static? 1.1 static 的引入 1.2 静态数据的存储 2. 在 C/C++ 中static的作用 2.1 总的 ...

  10. php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?

    foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...

最新文章

  1. H264码流结构分析
  2. 玩一玩微信公众号开发(一) 接入系统
  3. 异或运算交换两个整数
  4. 冯诺依曼计算机的组成
  5. 支撑百万级并发,Netty如何实现高性能内存管理
  6. MPEG-PS封装格式
  7. Vue动态权限路由addRoutes执行初次白屏解决方法。
  8. Mac上几款好用磁盘分析备份管理工具
  9. CAD快捷键怎么恢复默认设置?
  10. Musical Christmas Lights——一个圣诞树灯光✨随音乐节奏改变的前端开源项目
  11. 华为认证hcia含金量_华为认证那个证书有什么用?
  12. tensorflow实现对图片的读取(tf.image.decode_jepg和tf.image.decode_png)
  13. 从七十年代到现在软件架构的思想变化
  14. O2O、C2C、B2B、B2C、F2C的区别在哪里?
  15. python判断一个字符串是不是ip地址
  16. ansys 内聚力模型_ANSYS Workbench有限元分析实例详解:静力学 PDF高清完整版
  17. 2009年工作总结(三)
  18. 北京公务员计算机试题,北京公务员补录一级计算机练习题计算机一级计算机基础及+MS+Office应用(选择题)模拟试卷190:钢铁是怎样炼成的读后感...
  19. java gb18030 转 utf-8_Java:GB18030字节数组与UTF8互转
  20. uCOSii中的互斥信号量

热门文章

  1. 隐藏桌面上计算机图标不见了怎么办,电脑的快捷图标不见了怎么办
  2. 通过创建Google快讯将定期搜索结果发送到Gmail信箱
  3. 新浪微博维护工具 推兔刷积分
  4. bzoj4391 [Usaco2015 dec]High Card Low Card题解
  5. Java语法糖以及实现
  6. 英语各种数字表达方式大全(转载)
  7. 网络故障排查的思路和方法
  8. php上传504,nginx+php设置大文件请求上传(502及504问题处理)
  9. # cs231n (三)优化问题及方法
  10. ENSP实验——Telnet远程连接