A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


WWDC2016第一天,黑马程序员全国首发iOS 10教程



前言
  6月14日北京时间凌晨2点,黑马程序员冲在研发课程一线的老师们彻夜未眠,在苹果刚刚公布iMessage的24小时内,我们已将WWDC2016开发者session第一天分享的技术研发为课程。将最新技术分享给大家,是我们一贯的作风。iOS10新特性教程,黑马程序员全国首发!

iMessage
  iMessage作为苹果开发者大会开发者Session环节第一天的主要内容之一,他的意义想必也是不容小觑的,尽管只是几个小小的改动,却是值得开发者去研究的。黑马程序员的老师在凌晨2点40分奋战至5点,已完成相关iMessage部分的研究与课程研发,暂时公开一个有关iMessageExtension的demo,链接如下:
游客,如果您要查看本帖隐藏内容请回复
教学视频下载链接在文章最后。
更多教程,我们的老师加速整理中,敬请期待。

What's new in Swift3.0

  我们的老师观看完昨天晚上的xxx先生的讲解,针对语法从 Swift 2 到 3 改变给予以下总结:

一、语法改变细节
1.Consistent Parameter Labeling(一致的参数标记)
func myFunction(a: Int, b: Int, c: Int) {}
// --Swift 2.x 调用
myFunction(10, b: 20, c: 30)
// --Swift 3.x 调用
myFunction(a: 10, b: 20, c: 30)

在 Swift 3.x 中,如果你不想要参数的名字,可以添加 _ 到参数名前作为外部参数,类似于:
func myFunction(a: Int, _ b: Int, c: Int) {}
// 调用
myFunction(a: 10, 20, c: 30)

2.Move 'Where' Clause to End of Declaration(将 'Where' 条件移动到声明的最后)
// --Swift 2.x
func anyCommon<T: Sequence, U: Sequence
    where T.Element: Equatable,
    T.Element == U.Element
    >(lhs: T, rhs: U) -> Bool { return false }

// --Swift 3.x
func anyCommon<T: Sequence, U: Sequence>(lhs: T, rhs: U) -> Bool
where T.Element: Equatable, T.Element == U.Element{ return false }

3.Warn on Unused Result by Default(默认不使用返回值的话会有警告)
在 Swift 3.x 中,如果一个函数有返回值,调用者调用该函数的时候忽略了返回值,那么Xcode 会有编译器警告,可以使用 '_' 代替

二、Swift 3中“移除”的新特性

1. SE-0002:移除 currying func 声明的语法
  在Swift 3.0 中,currying func 语法已经被移除,苹果认为函数的 currying 特性的使用场景并不大,但他会增加很多语言的复杂性,所以需要删除它。
//Before:
func curried(x: Int)(y: String) -> Float {
    return Float(x) + Float(y)!
}
//After:
func curried(x: Int) -> (String) -> Float {
    return {(y: String) -> Float in
        return Float(x) + Float(y)!
    }
}
// or
func curried(x: Int, y: String) -> Float {
    return Float(x) + Float(y)!
}

关于 currying 特性,可以查看http://swiftcafe.io/2015/10/23/swift-daily-currying

2.SE-0003: 移除 var 修饰的函数参数
  在之前,如果想要在函数内部修改参数的值的话,可以使用 var 修饰参数,就像这样:
func foo(var i: Int) {
    i += 1
}
  以上代码能够编译通过,但是调用者不能观察此值的改变,如果外界是想要将传入的值经过函数去改变的话,这个就不起作用了,因为:
func doSomethingWithVar(var i: Int) {
    i = 2 // 这个不会影响外面的i值, 但是这个i的值可以在此处修改
}
var x = 1
doSomethingWithVar(x)
print(x)
输出结果为1,如果想要在函数内部修改 x 的值,需要更改为:
func doSomethingWithInout(inout i: Int) {
    // 更改 i 的值
    i = 2
}
// 定义变量 i
var x = 1
// 执行函数
doSomethingWithInout(&x)
print(x)
此时输出结果为 2

3. SE-0004:移除 ++ 和 -- 操作符
  由于苹果认为这些操作符增加了学习的负担,并且也认为 x++ 不比 x += 1 快多少,所以就抛弃了 c++ 中循环常用的 '++' 和'--' 操作符,例如:
var i: Int = 0
// i++ 不再使用
// 使用:
i += 1
// 或者
i = i + 1

4. SE-0007: 移除 C 语言风格的 for 循环
  由于 C 语言风格的 'for' 循环表现得不够简洁,而 Swift 又提供了其特有的 'for' 循环格式,所以在 Swift 3.x 中移除了 C 语言风格的 'for' 循环,可以使用类似以下代码的循环:
for i in0..<3 {
    print("黑马程序员")
}

5. SE-0029: 移除隐式的元组作为被执行函数的参数
func foo(a : Int, b : Int) {}
在 Swift 2.x 中,我们调用多个参数的函数可以这样做:
foo(42, b : 17)
还可以这样将参数当作一个元组传入:
let x = (1, b: 2)
foo (x)
但是在 Swift 3.x 中,该语法已被移除:

三、关于Core Language 其它一些小的改进

1、 Core Language 语法清理
1. SE-0028 将 __FILE__ 替换成 #file。在 Swift 2.x 中,使用 __FILE__ 表示当前代码所在的文件,在 Swift 3.x 中,已更改成 #file
2. SE-0031 inout 被移动成为类型的一部分
3. SE-0036 需要使用点作为枚举的前缀去使用枚举的成员变量
4. SE-0040 在属性参数中,使用 “:” 代替 “=”
5. SE-0049 将 @noescape 和 @autoclosure 前置成为类型的属性
6. SE-0060 只能执行默认的参数顺序,不能将打乱参数的顺序
7. SE-0066 规范语法:函数类型参数需要圆括号
8. SE-0096 转换 dynamicType 从一个属性到一个操作符

“以卓越与偏执,回敬傲慢与偏见

    有很多开发者对培训机构有偏见,但是你们又可曾知道,在你们随意地“百度google”时所跳出来让你们满意的答案背后,有一群不被理解的IT教育行业的老师们,在为了更多想要跻身进入IT行业的孩子们,拼命的研发着课程。你们何尝想象过一群偏执狂一样的人,深夜伏案研发课程的场景。扪心自问,你们有多少人在论坛中、贴吧中留着“楼主好人,好人一生平安”的字样,却忘记和诋毁那些藏在资料背后,默默付出的那些老师们。

  黑马程序员坚持原创,坚持“极客”。极客精神,不止是每一位黑马程序员的信仰,同时也是黑马程序员的传承。
  有关iMessage及最新Xcode改版的相关功能的课程视频下载链接如下:

游客,如果您要查看本帖隐藏内容请回复

开发者大会仍在进行中,后续教程持续更新,敬请期待!



传送门:【全国首发】黑马程序员带你领略iOS 10新特性教程

35 个回复

正序浏览
好东西啊,谢谢分享
回复 使用道具 举报
这么快。。一定好好学。。
回复 使用道具 举报
哈哈哈哈哈哈哈哈还好还好
回复 使用道具 举报
支持支持
回复 使用道具 举报
Rowan 中级黑马 2016-9-19 23:50:46
31#
顶!!!观摩一下
回复 使用道具 举报
谢谢分享!
回复 使用道具 举报
支持黑马~~~厉害~666666666
回复 使用道具 举报
赞赞赞!!!!!!!!!!!!!
回复 使用道具 举报
nice
回复 使用道具 举报
学习学习!
回复 使用道具 举报
学习学习!
回复 使用道具 举报
大赞 我黑马老师 你们棒棒哒
回复 使用道具 举报
3t2y 初级黑马 2016-9-16 20:25:15
23#
顶,谢谢楼主。
回复 使用道具 举报
学习学习!
回复 使用道具 举报
学习学习!
回复 使用道具 举报
6666666666666666666
回复 使用道具 举报
好尽心尽责啊,大赞
回复 使用道具 举报
我来此观摩一下,有什么新鲜内容
回复 使用道具 举报
看看0000000
回复 使用道具 举报
5249674165498798464
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马