Swift中的?与!区别分析
2016-02-26 19:05
316 查看
在Swift的学习中发现如下问题:
var amiteLbl :UILabel?
self.amiteLbl = UILabel(frame:CGRectMake(50,100,200,40))
self.amiteLbl !.text = "I'm so sorry !"
self.view?.addSubview(self.amiteLbl)
两行为什么一个用!而一个用?
由于amiteLbl是可选变量,所以可能有值,也可能为nil。使用self.amite里一定有值,无论什么情况都调用后面的.text赋值方法。
而使用self.view?是声明此时并不确定self.view里是否有值,所以只在view有值时调用后面.addSubview方法。这样做的目的
1.让代码更加明确 2.给编译器提供更多线索,在编译时发现更多潜在错误。
var amiteLbl :UILabel?
self.amiteLbl = UILabel(frame:CGRectMake(50,100,200,40))
self.amiteLbl !.text = "I'm so sorry !"
self.view?.addSubview(self.amiteLbl)
两行为什么一个用!而一个用?
由于amiteLbl是可选变量,所以可能有值,也可能为nil。使用self.amite里一定有值,无论什么情况都调用后面的.text赋值方法。
而使用self.view?是声明此时并不确定self.view里是否有值,所以只在view有值时调用后面.addSubview方法。这样做的目的
1.让代码更加明确 2.给编译器提供更多线索,在编译时发现更多潜在错误。
相关文章推荐
- iOS 开发 -- Swift (十) 重载构造函数
- Swift:界面传值指南
- 在OC项目中添加Swift文件并实现混合编程
- swift与OC的关系
- iOS 开发 -- Swift (九) 构造函数
- IOS Apps 开发(Swift)(7)——Define Your Data Model
- IOS Apps 开发(Swift)(6)——Implement a Custom Control(2)
- The Swift Programming Language学习笔记(二十六)——高级运算符
- IOS Apps 开发(Swift)(6)——Implement a Custom Control(1)
- Swift编程之枚举类型详解
- 窥探Swift编程中的错误处理与异常抛出
- 七个Swift中的陷阱以及避免方法
- Swift - 多线程实现方式(3) - Grand Central Dispatch(GCD)
- (Swift+iOS)字符串轨迹转贝塞尔曲线,实现动态写字效果
- 窥探Swift编程之错误处理与异常抛出
- iOS 开发 -- Swift (八) 闭包
- Swift学习02
- swift 总结
- SWIFT 通过字符串创建相关的类
- 5.Swift枚举|结构体|类|属性|方法|下标脚本|继承