在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一.去重: 1>颜色: UIColor.whiteColor() 被改为 UIColor.white() 2>数组取值: list.objectAtIndex(i) 被改为 list.object(at: i) 3>present: presentViewController(controller, animated: true) 被改为 present(toViewController: controller, animated: true) 4> cell: dequeueReusableCellWithIdentifier("Cell", forIndexPath:indexPath) 被改为 dequeueReusableCell(withIdentifier: "Cell", for: indexPath) 5>tableView func numberOfSectionsInTableView(tableView: UITableView) -> Int 被改为 func numberOfSections(in tableView: UITableView) -> Int 二.参数
三、命名
2>CGRect: tableFooterView = UIView(frame: CGRectZero) 被改为 tableFooterView = UIView(frame: CGRect.zero) 3>CGRectZero: CGRectZero改为CGRect.zero 4>hidden: lbl.hidden = false 被改为 lbl.isHidden = false 5>Bundle: let bundle = NSBundle.mainBundle() 被改为 let bundle = Bundle.main() 6>FileManager: let mgr = NSFileManager.defaultManager() 被改为 let mgr = FileManager.default()
四、方法的返回值处理
1>我们在开发中可能会经常调用一些带有返回值的方法,但是却不处理返回值,例如以下这种:
这个方法实际上返回一个 UIViewController,但是很少有人会用,更多的场景是把它当成无返回的方法来使用。但是在 Swift 3 中,这样做是不行的,你必须处理掉这个返回值,如下:
使用单个下划线来指代一个不会被使用的变量。
2>Swift 3 不再允许传入传出的对象,之前带有 var 的方法声明将全部作废:
五、可选类型
self.performSelector(onMainThread: #selector(handle(ret:)), with: ret, waitUntilDone: true)
就以 Swift 3 下的这个函数为基准吧,老版本的Selector获取方法是这样的:
#selector(ViewController.handle(_:)) // 2.2
#selector(ViewController.handle(:)) // 2.1
#selector(handle) // 2.0
@selector("handle:") // 1.x x等于几已经不记得了
"handle:" // 没记错的话是 1.0 时代,直接传个字符串就是 Selector
N/A // Swift 的历史上,还真有过没有 Selector 的版本
回到 Swift 3 上来,目前的 Selector 写法如最上面那种,需要注意的是,Selector 的方法名和参数名必须与实际被调用的方法完全一致,否则编译时就会报错。 <用2.0的写法貌似也是可以调用的!!!> 另外,Selector 传参时,只能传递对象,不能传基础数据类型,传基础数据类型的情况下,一律变成0(希望这只是当前版本的 bug,不然太蛋疼了)。虽说苹果已经把大部分的 NS 类都去掉了前缀,但是 NSNumber 这东西还是得经常用一下呢?
@objc protocol MyProtocol: NSObjectProtocol {
optional func foo(myClass: MyClass?)
optional func bar(myClass: MyClass?)
}
需要改为
@objc protocol MyProtocol: NSObjectProtocol {
@objc optional func foo(myClass: MyClass?)
@objc optional func bar(myClass: MyClass?)
}
2>图形图象库: let imgData = UIImageJPEGRepresentation(img, 1)
let imgPath = "\(FileUtils.getDocumentPath())/\(name)"
imgData!.writeToFile(imgPath, atomically: true)
必须改为
let imgData = UIImageJPEGRepresentation(img, 1)
let imgPath = "\(FileUtils.getDocumentPath()!)/\(name!)"
NSData(data: imgData!).write(toFile: imgPath, atomically: true)
参考链接: http://gold.xitu.io/entry/576bd4595bbb500059463426 |
请发表评论