苹果文档提到:
Swift 的 nil 和 Objective-C 中的 nil 不一样。在 Objective-C 中,无
是一个指向不存在对象的指针。在 Swift 中,nil 不是
指针——缺少某种类型的值。可选的
任何类型都可以设置为 nil,而不仅仅是对象类型
以上知识什么时候有用?
在适用的情况下,编译器是否会自动将 Swift nil 转换为 Objective-C nil,反之亦然?
是的,编译器会将 Objective-C nils 转换为 Swift nils。这就是为什么当从 Objective-C 翻译时,所有指针在 Swift 中都必须成为可选的。
这些知识的用处就在您给出的描述中:
任何类型的可选值都可以设置为 nil,而不仅仅是对象类型
在 Swift 中,所有类型都可以是可选的,因此nil
。例如,在 Objective-C 中你不能将 NSInteger 设置为 nil。
从技术上来说nil
只是可选枚举中的一个案例:
enum Optional<T> {
case None
case Some(T)
}
nil
只是简写None
case
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)