《Swift 权威指南》简单纪要

《Swift 权威指南》简单纪要

作者:李宁

Swift 的作者 Chris 在硕士毕业时提出了一套完整的运行时编译思想,奠定了 LLVM 的发展基础。

从 OS X 10.9 和 Xcode 5 开始,LLVM+GCC 已经被替换成了 LLVM+CLang 。

Swift 虽然本身是静态语言,是一门类型安全的语言,但其吸取了很多编程语言的优点,同时具备了很多动态语言的语法特性和交互方式。

在实际使用时,你能真切的感觉到其的灵活性,但是过于灵活真的好么?有时候,选择太多,反而会使整体代码显得杂乱。

在其他语言中,函数要返回多个值,则需要返回一个对象或结构体指针,而在 Swift 中可以通过返回元祖来实现多个值的返回。

可选变量的引入解决了大部分需要显示处理的异常,这部分工作由编译器完成。

很难说这个类型的使用简化了编程,你需要对所有可能为空的变量进行判断,然后决定是否使用。如果强制解包的时候,变量意外为 nil ,那同样为产生异常。

当 Swift 编译器在检测到数组中的的所有元素类型都相同时,就会将变量或常量类型设为 Swift 中的数组类型 Array ,否则,则设为 NSArray 类型。这种套路对于 Dictionary 和 NSDictionary 同样适用。

如此,便可以理解为何不能使用 as 将 [Any] 转为 Array 类型了。

var test:NSMutableDictionary = ["name":"bill","age":50];
test.addEntries(from: ["sex":"man"])

let test:NSMutableDictionary = ["name":"bill","age":50];
test.addEntries(from: ["sex":"man"])

通过上面的对比,可以判断出 var 和 let 只是对其后的变量进行修饰,决定其是否可以被变更,对其实际变量类型所包含的值能否变更并无约束力。

在闭包中可以定义捕获列表,列出闭包中使用到的闭包外的所有变量,至于其是弱引用还是无主引用,则可以通过 unowned 来指定。

无主引用修饰的变量是不会自动置为 nil 的,也就意味着,使用无主引用修饰变量时,你需要确定该变量被使用时,其指向的实例是肯定存在的,即它总是在包含有无主引用变量的实例释放后释放。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值