最近升级了Xcode8.0, 老项目几百个红,说多了都是泪~~~~,这里记录一下Swift3.0的一些变化,仅供参考!!!
1. 调用函数或者方法时,第一个参数不再省略, 除非使用_来忽略,Swift3.0以前第一个参数是忽略的
2. 取消了var参数
3. inout参数修饰放到了类型前面
1 | func --(a: inout Int) { |
4. Swift3.0后方法的返回值必须要有接受者,否则会有警告.当然可以使用_来忽略返回值,或者使用@discardableResult来声明可以不接受返回值
1 | @discardableResult |
5. Selector的变化, 从最早的字符串到#selector(method(param1:))
6. 可选协议方法optional, 必须要在协议名称和方法前面都添加@objc
1 | @objc protocol Mappering { |
7. 取消了++、–操作符, 去掉了C分隔的for循环
8. SDK的一些变化, 对一些API进行了简化
1. CGRectZero、CGPoint、CGSize和UIEdgeInsets等的变化, 取消了CGRectMake等函数
1 | CGRect.zero |
2. UIApplication的变化
1 | UIApplication.shared.isNetworkActivityIndicatorVisible = true |
3. NSUserDefaults的变化
1 | UserDefaults.standard.removeObject(forKey: customer_RETURN_DATA_KEY) |
4. NotificationCenter的变化
1 | NotificationCenter.default.post(name: NSNotification.Name(rawValue: customerDidLogoutSuccessNotification), object: nil) |
5. 枚举成员从大写变成了小写
1 | .Center---->.center |
6. CAAnimationDelegate 现在开始强制需要遵循协议了
9. Xcode的变化
1. 新增了command + option + / 的注释, 类似于VVDocument
2. 对一些权限需要在Info.plist里面添加描述
1 | 麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风? |