时隔半年之久,项目缠身,没能督促自己跟进Swift,一转眼已是5.0,带着问题来学习吧。
The Swift Programming Language(Swift 5.0)
这里是OC与Swift对比之下提出的问题,之后会陆续找到答案的:
文档里说,Swift通过采用现代编程模式来定义大类常见的编程错误:
- 变量在使用之前要被初始化
Q:OC有这个特性吗?
A:OC没有要求,使用之前一定要初始化.不过个人建议先初始化后再使用,初始化后,指针所指向的空间有了,对象也存在了.
如果想要了解变量初始化的意义,可以参考文章:iOS中定义变量是否初始化的区别 - 检查数组是否越界
- 检查整数是否溢出
Q:OC是否可以编译时检查数组是否越界?
A:OC是动态语言,只会在运行时才知道数组是否越界,没有预知能力,所以swift更安全 - 可选值(Optionals) 确保nil 明确地被处理过
Q: OC可以处理nil值吗?
A:若不做任何保护代码判断,OC 是没有能力自行判断的 - 自动管理内存
Q:OC的内存自动管理机制和Swift有什么不同吗?
A:Swift使用自动引用计数(ARC)来简化内存管理,与OC一致 - 错误处理允许从异常失败中控制恢复。
Q: OC可以做到吗?
A:目前还没听说,异常失败后就app就退出了,需要重启,Swift如何做到,有待继续学习.
参考文章:iOS中定义变量是否初始化的区别