nil == 0的陷阱

在查一个bug的时候,惊讶的发现自己把一个枚举类型(NSInteger)赋值给了一个NSNumber,然而编译器居然没有报错😡

直接将一个NSInteger类型赋值给NSNumber类型,编译器是会报错的。然而由于nil与0等价,因此当这个NSInteger是值为0的常量时,编译器会将其视为nil,因此不会报错。

由此,我们可以认识到Swift的Optional类型的价值,从语言的层面,减少程序员犯错的几率。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,896评论 1 10
  • 1.OC里用到集合类是什么? 基本类型为:NSArray,NSSet以及NSDictionary 可变类型为:NS...
    轻皱眉头浅忧思阅读 1,396评论 0 3
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,217评论 30 472
  • 1. 使用 #import 相对c的 include 是防止头文件的重复导入 2. NSLog 相对于 print...
    迎风起飞的猪阅读 1,780评论 6 9
  • 本文结构 参考孟岩老师的文章,对本文结构如下划分 基本数据类型基本语法数组和其他集合类基本输入输出和文件处理,输入...
    不抄完整本三国不改名阅读 539评论 0 1