Swift的优势
高效——易于读和写
例子1: 初始化可变数组并添加一个对象
Obj - C:用alloc分配内存,init初始化
NSMutableArray *array1 = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", nil];
[array1 addObject:@"4"];
Swift:使用var声明变量,使用“+=”拼接两个数组
var array1 = ["1", "2", "3"]
array1 += ["4"]
例子2: 取数组的第一个字符串对象,进行拼接并获取range
Obj - C:用“[]”调用方法,比较冗长
[[[array1 objectAtIndex:0] stringByAppendingString:@"111"] rangeOfString:@"1111"];
Swift::用“.”调用方法,非常简洁
array1[0].appending("111").range(of: "1111")
易于维护,文件数量更少
Swift创建的文件只有一个.swift文件,相比于Obj-C的“.h”和“.m”文件,会让文件数目减少一半。

更安全
Obj-C:潜在的nil危险

Swift:出现“?”来提醒潜在的nil对象

函数式编程
例子:
有两个数组(如下图),根据数组indexes里的元素作为索引从numbers中取出数字并拼接成一个字符串

Obj-C:命令式编程,可以思路很清晰地写出如下代码

虽然代码可以work,但是未免太长,也不具有函数性,整个代码段包含太多命令和状态的改变。
我们可以使用更加函数式的代码写出来。
Swift:

还可以让代码变的更少:

更更少:

这就是函数式编程的魅力所在,不需要任何新的中间变量,和状态的改变,通过一行代码就可以达到九行代码的效果。
这也展现出函数式编程的核心 —— 比如使用map、reduce来代替for循环。
所以还没有接触过Swift的iOS开发者们可以将Swift学起来啦~保证不后悔 ᕕ(ᐛ)ᕗ