Swift和OC的区别:
1:swift不像oc语言必须有一个主函数main()作为程序的入口,swift程序从第一句开始向下顺序执行.一直到最后
2:每个语句结束后可以不加分号,但是多条语句不能在同一行
3:在声明常量或变量的时候直接初始化可以省略其类型,否则需要在变量名称后加冒号加类型
4:swift中增加了oc中没有类型元组.元祖可以创建和传递一组数据.元祖把多个值组合成一个复合值.元祖内的值可以是任意类型
5:swift还增加了可选类型,swift定义的常量和变量是没有默认值的,所以引入了可选的概念,在获取的时候用!强制解析.
6:不需要引入头文件
Swift 各版本的新特性
Swift3(xcode8 引入)特性,彻底移除在Swift2.2就已经弃用的特性
- 弃用 ++ 和 -- 操作符
- 废除 C 语言风格的 for 循环
- 移除函数参数的 var 标记
- 所有函数参数都必须带上标签,第一个参数必须是下划线
- 函数的声明和调用都需要括号来包括参数
- selector 不再允许使用 String
Swift3 新特性
- 内联序列函数 sequence, 新增了两个全局函数:sequence(first: next:) 和 sequence(state: next:) 使用它们可以返回一个无限序列
- key-path 不能再使用 string
- Foundation 去掉 NS 前缀
- 除了 M_PI 还有 Float.pi、Double.pi、CGFloat.pi
- 简化了 GCD,消除冗余更加面向对象化
let queue = dispatch_queue_create("Swift 2.2", nil)
dispatch_async(queue) {
print("Swift 2.2 queue")
}
let queue = DispatchQueue(label: "Swift 3")
queue.async {
print("Swift 3 queue")
}
Core Graphics 的写法更加面向对象化
新增新增访问控制关键字: fileprivate,open,在原有的 peivate,public,internal 3个关键字外
- private: private的访问级别所修饰的属性或者方法只能在当前类里访问
fileprivate: fileprivate访问级别所修饰的属性或者方法在当前的Swift源文件里可以访问
internal: internal(默认访问级别,internal修饰符可写可不写),internal访问级别所修饰的属性或方法在源文件所在的整个模块都可以访问
如果是框架或者库代码,则在整个框架内部可以访问,框架由外部代码所引用时,则不可以访问,如果是APP代码,也是在整个APP代码,也是在整个APP内部可以访问
public:可以被任何人访问,但其他的module中不可以override和继承,而在module内可以被override和继承
- open可以被任何地方使用,包括override和继承
- 5种修饰符访问权限排序 open > public > internal > fileprivate > private
一些语法的修改
- 数组排序:sort()与sorted()
- 数组反转reversed()数组方法的遍历enumerated()
- 过去的过去的CGRectMake、CGPointMake、CGSizeMake已废弃。现改用CGRect、CGPoint、CGSize代替
- 移除了API中多余的单词
- 枚举的成员变成小写字母开头
- @discardableResult