1.Swift简介
2014年WWDC 发布的新开发语言,可与OC共同运行于Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。
swift2.0之后的语法则趋于稳定,2017年发布的swift4.0虽有改动,但也只是增添了一些新特性。这些新特性需要在Xcode9上运行才能显示出效果。值得一提的是它支持unicode9,也就是说,可以用某些图片图标来充当变量。
2.特点:
①快速,安全,使用安全的编程模式并添加很多新特性,使编程更简单,扩展性更强(支持Cocoa 和 Cocoa Touch框架)。
②取消了OC指针和其他不安全访问的使用.变量总是初始化之前使用,数组和整数检查溢出,内存自动管理。
③支持代码预览,允许程序员在不编译和运行应用程序的前提下运行 Swift 代码并实时查看结果
④舍弃OC 早起的SmallTalk的语法,全面改为打点调用(使用点语法调用属性或者函数).
⑤提供了类似Java的命名空间(name space)/泛型(generic)/运算对象重载(operator overloading
⑥语法非常简洁,让编程的流程大大缩短、简化、高效、强大.
⑦去掉NS前缀
3.为什么要学习Swift:
swift作为面向协议语言,不仅能写移动端,也可以做到搭建服务器端。纵观国内外iOS开发界,已经有许多公司直接或间接采用swift开发,使用swift语言开发已成为未来iOS开发的趋势。swift以简洁、优雅等优点迅速俘获广大开发者的青睐。
二、用Playground 体验swift开发
打开Xcode ,选择创建一个playground 项目
左边代码区,右边显示区(编译结果)
创建一个普通的UIView对象
playgound文件的左边是代码区,右边则是显示结果的区域。当点击用于眼睛时会实时显示出界面效果
可以立即快速查看(Quick Look)和显示结果(Show Result)正如上图所示:
Swift 和OC的重大区别:
1>在swift中是没有.h和.m文件之分的。所有的代码全部都存储在一个文件里面。在swift中所有的代码都被封装在{}里面
2>OC使用alloc init进行初始化,而swift使用()
3>OC中使用[]来调用方法,而swift中采用点语法。比如UIColor.red
4>swift中不需要用分号分割语句
5>不需要#import导入头文件,就可直接使用,
6>print: NSLog, true 和 false 替代 Yes 和 No
7>函数和闭包 使用func来声明一个函数,使用名字和参数来调用函数。使用->来指定函数返回值。
8>子类的定义方法是在它们的类名后面加上父类的名字,用冒号分割。 子类如果要重写父类的方法的话,需要用override标记
9>枚举和结构体 使用enum来创建一个枚举,使用struct来创建一个结构体。结构体和类有很多相同的地方,比如方法和构造器。它们结构体之间最大的一个区别就是 结构体是传值,类是传引用
10>接口和扩展: 使用protocol来声明一个接口
三、常量和变量
1>.数据类型:
常见的数据类型变量:
但其实,在swift中,是不存在基本的数据类型的,所谓的数据类型,其实都只是结构体
2.变量和常量:
声明:
swift中用let声明常量,用var声明变量。
常量不能修改他的值
//错误示范,let z 在声明的时候并没有赋值常量是不可改变的,只能在声明时赋值
在开发中,通常会优先选择使用let,因为不可变会更安全一点。所以建议在写代码之时,先选择let,等到需要变化的时候再改成var。
自动推导:
创建一个UIView,不指定类型。可以看到控制台上会打印出UIView的信息。这个现象被称为swift的自动推导。事实上,在代码左侧定义的类型只是程序员希望的类型,而右侧才是程序真实的类型。
也就是说,变量或常量的类型会根据右侧代码执行的结果,推导出对应的类型。
可以使用热键option点击查看类型。
严格之处:在Swift 中,任何不同类型的数据之间是不允许直接运算的。
如果非要让不同类型数据之间能够运算,可以将其中一个类型进行转换
此时得到的结果就是25。在swift中,做类型转换时是将数据括起来,相当于swift结构体中的构造函数。
当然也可以将前面的整数转换成Double型。此时就能打印出小数来。
结果是25.5
//指定类型:
Swift代码联想快捷键: 例如:输入CGRect + Command + 9