黑马程序员技术交流社区

标题: WWDC2016第一天,黑马程序员全国首发iOS 10教程 [打印本页]

作者: 柳柳桑    时间: 2016-6-15 12:12
标题: WWDC2016第一天,黑马程序员全国首发iOS 10教程

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 从一个属性到一个操作符
更多详情请查看:https://github.com/apple/swift-evolution/tree/master/proposals

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

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

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


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



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


作者: 橘子哥    时间: 2016-6-15 12:24
这速度,比OPPO快充还快!!!
作者: y17920    时间: 2016-6-15 13:10
支持支持
作者: sc33370    时间: 2016-6-15 14:08
支持。。。。。
作者: 拿着斧头打天下    时间: 2016-6-15 16:21
 不错,给力
作者: 赵文彬    时间: 2016-6-15 17:38
真快,老师们辛苦了
作者: 小海盗。    时间: 2016-6-15 20:40
黑马真给力  这么快 就出新特性的教学资料
作者: chengongzong    时间: 2016-6-15 21:21
666666 超级棒
作者: 呼唤君の名    时间: 2016-6-15 22:24
可以的,加油黑马
作者: 1871037345    时间: 2016-6-15 22:53
绝对神速啊,,必须支持
作者: chaoren66    时间: 2016-6-15 22:59
太给力了,赞一个
作者: 443785417    时间: 2016-6-16 22:32
定一哈                     
作者: hhhhhhhh    时间: 2016-6-18 14:45
谢谢老师们为中国发展所做的贡献
作者: wzg682735    时间: 2016-6-21 07:19
不错不错,赞
作者: ldk1991125    时间: 2016-6-21 14:21
努力学习基础课程啊,这些暂时还真看不懂
作者: 浮云我想听你说    时间: 2016-6-21 20:58
顶一个!
作者: 小伟_dMRmW    时间: 2016-6-22 12:20
5249674165498798464
作者: yangqiangyang    时间: 2016-6-22 16:22
看看0000000
作者: 1130488283    时间: 2016-7-8 21:29
我来此观摩一下,有什么新鲜内容
作者: 不想长大    时间: 2016-7-9 00:38
好尽心尽责啊,大赞
作者: bear1998    时间: 2016-9-13 21:12
6666666666666666666
作者: chensc    时间: 2016-9-16 06:24
学习学习!
作者: chensc    时间: 2016-9-16 06:25
学习学习!
作者: 3t2y    时间: 2016-9-16 20:25
顶,谢谢楼主。
作者: yuxuan3705    时间: 2016-9-16 22:26
大赞 我黑马老师 你们棒棒哒
作者: chensc    时间: 2016-9-18 06:27
学习学习!
作者: chensc    时间: 2016-9-19 06:28
学习学习!
作者: Stone_熊小叔    时间: 2016-9-19 08:48
nice
作者: HiGodl    时间: 2016-9-19 17:17
赞赞赞!!!!!!!!!!!!!
作者: yin506859351    时间: 2016-9-19 19:58
支持黑马~~~厉害~666666666
作者: 新程猿    时间: 2016-9-19 23:35
谢谢分享!
作者: Rowan    时间: 2016-9-19 23:50
顶!!!观摩一下
作者: 543117322    时间: 2016-9-25 20:26
支持支持
作者: cyz_273    时间: 2016-9-30 15:19
哈哈哈哈哈哈哈哈还好还好
作者: will123    时间: 2016-10-1 20:34
这么快。。一定好好学。。
作者: 瑜尚    时间: 2016-10-5 10:18
好东西啊,谢谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2