记录一下Swift3.0的一些代码格式的变化
2016-10-11 16:44
477 查看
一.去重:
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 的方法声明将全部作废:
五、可选类型
[/code]
回到 Swift 3 上来,目前的 Selector 写法如最上面那种,需要注意的是,Selector 的方法名和参数名必须与实际被调用的方法完全一致,否则编译时就会报错。 <用2.0的写法貌似也是可以调用的!!!>
另外,Selector 传参时,只能传递对象,不能传基础数据类型,传基础数据类型的情况下,一律变成0(希望这只是当前版本的 bug,不然太蛋疼了)。虽说苹果已经把大部分的 NS 类都去掉了前缀,但是 NSNumber 这东西还是得经常用一下呢?
2>图形图象库:
参考链接: http://gold.xitu.io/entry/576bd4595bbb500059463426
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
二.参数
1>对齐方式:
lbl.textAlignment = NSTextAlignment.Center
被改为
lbl.textAlignment = NSTextAlignment.center
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>我们在开发中可能会经常调用一些带有返回值的方法,但是却不处理返回值,例如以下这种:
navigationController!.popViewControllerAnimated(true)
这个方法实际上返回一个 UIViewController,但是很少有人会用,更多的场景是把它当成无返回的方法来使用。但是在 Swift 3 中,这样做是不行的,你必须处理掉这个返回值,如下:
let _ = navigationController!.popViewController(animated: true)
使用单个下划线来指代一个不会被使用的变量。
2>Swift 3 不再允许传入传出的对象,之前带有 var 的方法声明将全部作废:
[code]var str: String! = "a"
var s = str print(s)
[/code]
[code]六、Selector[/code]
Swift 3 对可选类型的处理更严格了,必须显式的在任何地方使用感叹号,例如我们有以下代码:
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 这东西还是得经常用一下呢?
七、类库 1>协议的可选
@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
相关文章推荐
- Swift-3.0相对于2.3语法的一些变化
- Swift3.0相对于2.3语法的一些变化
- 谈谈OC到Swift的一些代码习惯的变化
- Swift 3.0项目迁移的一些记录
- VB和VC格式化代码的一些方法,记录一下,不记老忘记
- 整理一下之前工作中记录过的一些东西——SQL
- 整理一下之前工作中记录过的一些东西——shell
- 从国外某著名DNN 知情人士 Nina's Blog上看到一些有用的文章,在此记录一下,也为国内DNN,问题搜索,出一点力
- 从国外某著名DNN 知情人士 Nina's Blog上看到一些有用的文章,在此记录一下,也为国内DNN,问题搜索,出一点力
- 优化了一下Gridview导出EXCEL的代码,现在导出的Excel是正确的格式
- 网页中点击链接后控制格式变化的代码——Dreamweaver
- 整理一下之前工作中记录过的一些东西——数据库连接
- wap2.0 xhtml 文件上传代码记录一下~~。cmwap测试不行,cmnet可以。
- 整理一下之前工作中记录过的一些东西——sequence:在这里可以解释为"序列"
- 整理一下之前工作中记录过的一些东西——4gl
- 整理一下之前工作中记录过的一些东西——informix
- net控件中数据导到Excel的格式 首先,我们了解一下excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所以把mime类型设为:application/vnd.ms-excel,当excel读取文件时会以每个cell的格式呈现数据,如果cell没有规定的格式,则excel会以默认的格式去呈现该cell的数据。这样就给我们提供了自定义数据格式的空间,当然我们必须使用excel支持的格式。下面就列出常用的一些格式: 1) 文本
- 记录一下,每次都不记得自己排名变化没有
- 记录一下今天上午看的mmc代码(2.6.27)
- 整理一下之前工作中记录过的一些东西——车险理赔中的一些概念