/**
* 初始swift
1优点 1>安全,采用数据类型推断机制,现在对象指针使用,自动化管理内存使程序更安全
2>流行具有optianal,泛型和原则等现代语言的特性,比OC语言更具有灵动,更接近自然语言
3>强大强大的模式匹配可以写成更加简单,更加直观的代码,
通过变量插值的方式可以更加方便的格式化字符串,也方便用Foudation和UIKit
4>交互性使用playground操场技术来体验新技术,分析问题,做所见即所得的界面原型
5>高效 swift的编译器使用高级的代码分析功能来调优开发者代码,
6>兼容 ,swift与OC完全兼容,很容易混编
2缺点
1>swift支持的复杂的数据结构比较有限
2>目前可以使用地方库比较少
3>swift 和OC 一样,基于LLVM编译器,使它不可以在android和windows phone上工作
*/
/**
* 关键字
1>用作声明的关键字
class deinit enum extension func import init let protocal static struct subscript
typealias var
2>用作语句的关键字
break case continue default do else fallthrought if in for return switch where while
3>用作表达式和类型的关键字
as dynamicType is new super self Self Type __COLUMN__ __FILE__ __FUCTION__ __LINE__
4>特定上下文中被保留的关键字
associativity didSet get infix inout override mutating none nonmutaing opertor postfix precedence prefix right set unowned unwoned(safe) unwoned(unsafe) weak
willSet
*/
以下参考来源http://www.csdn.net/article/2015-07-27/2825302/1
安全(SAFE)现代(MODERN) 强大(POWER)
例如Double类型的变量,默认值是0。这点与Objective-C、C++和C语言不同,不对变量赋值的话,那么变量的默认值是一个随机数。如果不注意这点,则很容易由此导致Bug的产生。使用Swift语言则可以避免这种情况发生,所以说Swift是类型安全的。
但是类似于“变量声明时就有初始值”的特性在JavaScript,C#等多种现代语言中早已实现了。
功能强大
1>有一个特性中是对字符串操作的简化,在下面的代码中,Swfit可以用\(a)的形式,代替C语言中对字符串format操作。大大简化了代码,增加了程序的可读性。4>For-in语句的增强。
维基百科上除了有语法糖,还有“语法盐”和“语法糖精”2个概念。分别代表特别难用的语法,和看似很好用但实际有害的语法。 比如在Swift beta版中,在for-in语句中可以使用“n..m”语法,表示从n开始,循环m次。例如:语法糖(Syntactic sugar),也译为糖衣语法,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
但是在正式版中,这种写法被取消了。因为“n..m”和“n…m”这两种写法太相似了,如果都保留就会引起混淆,降低程序的可读性,成为“语法盐”或者“语法糖精”了。
现在评价Swift中的新语法是语法糖还是语法盐还为时尚早,需要时间和市场的检验。
现代特性。
闭包有以下3个特点:
提到闭包,想必很多人都会想到JavaScript。我们就来对比一下JavaScript的闭包和C#中的Lamda表达式:
因此我们大可不必因为泛型而转向Swift。
3>可选(Optional)变量
不过类似的语法在10年前的C# 2.0中就出现了。
以介绍了这么多Swift的特性,那么应该如何评价Swift语言呢?
从客观上讲,Swift中确实包含了“安全、现代、强大”的特性,但是这些特性在其他语言上早就有支持。因此这些特性与其他语言相比(包括Objective-C)并没有绝对优势。对于一个编程语言,除了语言特性之外,还可以从以下3个方面进行比较:
代码效率
对于Swift和Objective-C的运行效率,primateLab进行了一个对比测试。
综上所述:Swift在代码效率的3各方面,虽然有一定优势,但是还不能由此得出“我们应该转向Swift”的结论。
学习成本
对程序员来说,熟悉Swift语法也不过一天时间足够了。关键是要提供高级数据类型,简化Cocoa类库,否则用不用Swift都没区别。
生态环境
生态环境是一个比较抽象的概念。这里我们把生态环境简化为2个问题:
Swift可以说是与平台强相关的,离开苹果平台,Swift恐怕没有用武之地。最近十几年我们看到微软、诺基亚的起起落落。因此在我们决定是否选择Swift的时候,我们对苹果的前景和信心也是一个重要的考量因素。
以上我们从语言特性、代码效率、学习成本和生态环境4各方面考察了Swift。
调试工具。JavaScript作为一个前台语言为什么这么流行?一个重要因素是诸如像Google Chrome和FireFox等工具为JavaScript提供了相当完善、相当优秀的调试工具。
跨平台开发。我们是否愿意把自己押宝在一个平台上,赌这一个平台的成败。Php和JavaScript是几乎没有平台的概念。但如果做移动端开发的话,显然还是要选择一个平台的。不过最近Facebook推出了一个框架:Reactive Native。虽然还不完善,但我们可以想象一下,如果我们能用JS开发iOS,那我们还会学Swift吗?
除了开发之外,在实际项目中还有许多工作要做。比如测试,比如对测试结果的分析,对上线后应用运行状况的分析。如果上线后很多用户出现程序闪退,如何知道闪退原因?定位问题?
在腾讯内部,有一个公用的crash定位模块。每个App都可以使用这个模块。这个模块可以帮助App定位和分析crash的数量、类别、原因等信息。 现在这个模块已经对外公布出来了,名为Bugly。腾讯之外的App也可以使用这个模块了。
答案是肯定的。Swift中融合了许多现代语言中先进的特性。通过学习Swift可以了解现代语言的发展趋势。多掌握一门语言也有助于横向对比,更深刻的了解语言特性的本质,同时也是提高自己的眼界和学习能力的一个高效的手段。
这个问题要具体情况具体分析。首先要看团队的能力。如果团队的学习能力很强,则可以考虑使用Swift。但是也不绝对,如果团队经验非常丰富,在iOS上面拥有五年以上的开发历史,那就要慎重一些了,因为这样会增加学习成本。如果团队很年轻,经验也不多则可以考虑使用Swift。
接下来还要考虑项目的构成。比如包含上千个C语言的文件,那么转换的成本就太高了。而且会严重影响应用的稳定性。如果是全新的项目,就可以考虑使用Swift了。