一.去重:

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
2
3
4
5
6
7
8
9
10
11
12
13
override func viewWillAppear(animated: Bool)
被改为
override func viewWillAppear(_ animated: Bool)
下面再看一个实例的调用例子,加深印象:
 
func myFunc(x: Int, y: Int)
这个函数在调用时必须使用以下代码
myFunc(x: 1, y: 2)
若是允许匿名参数,则修改之:
 
func myFunc(_ x: Int, _ y: Int)
这个函数在调用时允许不带参数名称
myFunc(1, 2)

三、命名

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 的方法声明将全部作废:

1
2
3
4
func myFunc(var a: Int) -> Int
如以上这种声明,已不可再使用,对于有多个值要返回的方法,必须改为:
 
fun myFunc(a: Int) -> (Int, Int)

五、可选类型

var str: String! = "a"
var s = str
print(s)
六、Selector
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

记录一下Swift3.0的一些代码格式的变化的更多相关文章

  1. Swift3.0语言教程使用占位符格式创建和初始化字符串

    Swift3.0语言教程使用占位符格式创建和初始化字符串 Swift3.0语言教程使用占位符格式创建和初始化字符串在很多的编程语言中都存在占位符,占位符就是为指定的内容占留一个位置.此功能一般在开发者 ...

  2. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  3. Swift3.0变化分享

    Swift 3.0 做出的改变很大,在这篇文章中,我将尽我所能,利用代码样例给大家解释Swift 3.0最重要(要命)的改变,希望大家能够做好升级Swift 3.0 的准备.Swift 3.0的改变不 ...

  4. swift3.0变化总结

    Swift 3.0 做出的改变很大,在这篇文章中,我将尽我所能,利用代码样例给大家解释Swift 3.0最重要(要命)的改变,希望大家能够做好升级Swift 3.0 的准备.Swift 3.0的改变不 ...

  5. iOS 日期处理 (Swift3.0 NSDate)

    处理日期的常见情景 NSDate -> String & String -> NSDate 日期比较 日期计算(基于参考日期 +/- 一定时间) 计算日期间的差异 拆解NSDate ...

  6. Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)

    前边以及陆陆续续的介绍了使用Swift3.0开发的服务端应用程序的Perfect框架.本篇博客就做一个阶段性的总结,做一个完整的实例,其实这个实例在<Swift3.0服务端开发(一)>这篇 ...

  7. swift3.0:CoreData的使用

    一.介绍 CoreData不像slqite3那样编写代码繁琐,同时避免了使用了SQL语句的麻烦,也可以回避使用C语言的语法,降低了iOS开发的技术门槛. CoreData可降低开发成本,提高代码质量. ...

  8. Swift3.0中关于日期类的使用指引

    日期的处理在大大小小的iOS项目中都十分常见,随着Swift3.0正式版的即将推出,语法的改变让NSDate以及相关类的使用都与之前略有不同,这里将会对基于Swift3.0版本的NSDate及相关类的 ...

  9. Swift3.0学习之基础部分

    1.常量和变量 常量和变量把一个名字(比如 maximumNumberOfLoginAttempts 或者 welcomeMessage )和一个指定类型的值(比如数字 10 或者字符串 " ...

随机推荐

  1. C#判断程序是由Windows服务启动还是用户启动

    在Windows系统做网络开发,很多时候都是使用Windows服务的模式,但在调度阶段,我们更多的是使用控制台的模式.在开发程序的时候,我们在Program的Main入口进行判断.最初开始使用Envi ...

  2. JavaScript中,{}+{}等于多少?

    最近,Gary Bernhardt 在一个简短的演讲视频“Wat”中指出了一个有趣的 JavaScript 怪癖: 在把对象和数组混合相加时,会得到一些意想不到的结果. 本篇文章会依次讲解这些计算结果 ...

  3. C#入门基础

    那么由 = 连接起来的这个式子 就叫赋值表达式 解决异常的 办法 for循环 常量 常量在程序中  怎么定义: const 类型   常量名= 值; 在程序中可以改变常量的值吗  不可以  一旦改变  ...

  4. 前端复习-01-dom操作包括ie和现代浏览器处理相关

    一.事件流事件流描述的是从页面中接受事件的顺序.IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流1.事件冒泡事件冒泡,即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然 ...

  5. cocos2d-x中有一个JniHelper类详细使用

    主体思路 通过JNI获取java虚拟机,再获取当前程序的JNI环境,通过JNI环境获取需要调用的java类信息,再获取需要调用的java类中的函数信息.再通过JNI环境调用,使用类信息.函数信息,调用 ...

  6. MYSQL数据库重点:事务与锁机制

    一.事务 一组连续的数据库操作,每一次操作都成功,整个事务就成功,只要有一步出错,整个事务就失败: MySQL事务与存储引擎相关 1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB: ...

  7. 1.VS2010C++环境设置

    一.需要下载的软件 1.visual studio 2010\\xxzx\tools\编程工具\MICROSOFT\VISUAL.STUDIO\VISUAL.STUDIO.201032位cn_visu ...

  8. compiled python files

    [compiled python files] As an important speed-up of the start-up time for short programs that use a ...

  9. redhat6.4升级openssh至6.7

    1:简介 最近浙江电信对线上服务器进行漏洞扫描,暴露出原有的openssh有漏洞,建议升级openssh版本: 2:操作环境 Red Hat Enterprise Linux Server relea ...

  10. nyoj117 求逆序数

    求逆序数 时间限制:2000 ms  |  内存限制:65535 KB 难度:5   描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中 ...