OC中__kindof的用法
简介
__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的用法相关推荐
- oc 中随机数的用法(arc4random() 、random()、CCRANDOM_0_1()
oc 中随机数的用法(arc4random() .random().CCRANDOM_0_1() 1).arc4random() 比较精确不需要生成随即种子 使用方法 : 通过arc4random() ...
- php字典遍历,OC中的遍历数组和字典
什么是遍历 ? 最近总有刚接触编程的朋友问我什么是遍历? 那是用来干什么用的? 今天就来解释一下遍历以及在OC中的具体用法 在众多计算机程序语言中,数组是必不可少的数据类型.而所谓遍历就是沿着某条搜索 ...
- OC中的NSArray和NSMutableArray、NSDictionary和NSMutableDictionary用法
一:NSArray 和NSMutableArray 1: NSArray:不可变数组 NSArray是OC中使用的数组,只能用来存放OC对象,不能存放非OC对象如基本数据类型 它使不可变的,一旦初始化 ...
- OC中description、 SEL、类本质、self和super用法
一:description方法 description有对象方法和类方法两种,(是NSObject类的方法) 1,-description(对象方法) 使用NSLog和@%输出某个对象时,会调用对象的 ...
- 2015.12.23 OC中的字符串(NSStringNSMutableString) 数组(NSArrayNSMutableArray)
字符串(NSString&NSMutableString) 在OC中的字符串可分为两种:不可变字符串(NSString)和不可变字符串(NSMutableString).从字面上就可以理解这两 ...
- 一起Talk IOS吧(第八回 OC中复合类型的代码演示)
看官们,我们在第三回中介绍了OC中的复合类型,有看官说介绍的不够详细,因此我使用图形的方式对所有基本类型做了总结,请参考以下图片中的内容. 看完类型的总结后,我们将通过具体的代码来演示如何使用这些类型 ...
- mysql中change用法,mysql 中alter的用法以及一些步骤
mysql 中alter的用法以及一些方法 在用到alter的时间,查到了这个文章,就copy下来了,详细进入下面链接: MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名 ...
- mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法
Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...
- 【C++】C/C++ 中 static 的用法全局变量与局部变量
C/C++ 中 static 的用法全局变量与局部变量 目录 1. 什么是static? 1.1 static 的引入 1.2 静态数据的存储 2. 在 C/C++ 中static的作用 2.1 总的 ...
- php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?
foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...
最新文章
- H264码流结构分析
- 玩一玩微信公众号开发(一) 接入系统
- 异或运算交换两个整数
- 冯诺依曼计算机的组成
- 支撑百万级并发,Netty如何实现高性能内存管理
- MPEG-PS封装格式
- Vue动态权限路由addRoutes执行初次白屏解决方法。
- Mac上几款好用磁盘分析备份管理工具
- CAD快捷键怎么恢复默认设置?
- Musical Christmas Lights——一个圣诞树灯光✨随音乐节奏改变的前端开源项目
- 华为认证hcia含金量_华为认证那个证书有什么用?
- tensorflow实现对图片的读取(tf.image.decode_jepg和tf.image.decode_png)
- 从七十年代到现在软件架构的思想变化
- O2O、C2C、B2B、B2C、F2C的区别在哪里?
- python判断一个字符串是不是ip地址
- ansys 内聚力模型_ANSYS Workbench有限元分析实例详解:静力学 PDF高清完整版
- 2009年工作总结(三)
- 北京公务员计算机试题,北京公务员补录一级计算机练习题计算机一级计算机基础及+MS+Office应用(选择题)模拟试卷190:钢铁是怎样炼成的读后感...
- java gb18030 转 utf-8_Java:GB18030字节数组与UTF8互转
- uCOSii中的互斥信号量