当前位置:首页 >  科技 >  IT业界 >  正文

WWDC第一天,黑马程序员首发iOS10教程

 2016-06-15 15:45  来源: 互联网   我来投稿 撤稿纠错

  【推荐】海外独服/站群服务器/高防

前言

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

iMessage

iMessage作为苹果开发者大会开发者Session环节第一天的主要内容之一,他的意义想必也是不容小觑的,尽管只是几个小小的改动,却是值得开发者去研究的。黑马程序员的老师在凌晨2点40分奋战至5点,已完成相关iMessage部分的研究与课程研发,暂时公开一个有关iMessageExtension的demo,链接如下:

链接: 密码:xdjw

更多教程,我们的老师加速整理中,敬请关注“黑马程序员”

What's new in Swift 3.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

where T.Element: Equatable,

T.Element == U.Element

>(lhs: T, rhs: U) -> Bool { return false }

// -- Swift 3.x

func anyCommon(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 特性,可以查看相关文档

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 in 0..<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行业的孩子们,拼命的研发着课程。你们何尝想象过一群偏执狂一样的人,深夜伏案研发课程的场景。扪心自问,你们有多少人在论坛中、贴吧中留着“楼主好人,好人一生平安”的字样,却忘记和诋毁那些藏在资料背后,默默付出的那些老师们。

黑马程序员坚持原创,坚持“极客”。极客精神,不止是每一位黑马程序员的信仰,同时也是黑马程序员的传承。

申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!

相关标签
ios10
wwdc2016

相关文章

  • APP推广实战技能——IOS100字符关键词覆盖

    关键词也称关键词覆盖,可以简单的理解为当你在IOS上想到的任何词类,这个App都会出现在你眼前,那说明这个关键词你的产品就覆盖上了(当然,有些大咖给出专业化的术语,即用户在AppStore搜索一些词时,如果一款App出现在搜索结果中,那么该App就覆盖了这些词。)。

    标签:
    app推广
    ios10
  • iOS10照片恢复:iOS10最近删除照片恢复教程

    iOS10删除照片如何恢复?手机像素的越来越高,人们都喜欢用手机拍照,里面存放着我们的重要的回忆和纪念。我们在使用手机的过程中,经常会遇到,在清理手机照片的过程中,会误删手机里的照片。我们想找回手机中的被删除的照片,有什么简便的方法吗?今天小编来给大家分享如何恢复手机中被删照片。准备工具:苹果手机和

    标签:
    ios系统
    ios10
  • 升级iOS 10后:非原装数据线可以更顺畅使用

    (原标题:升级iOS10后:非原装数据线可以更顺畅使用)我们发现一些高仿数据线在iOS10上正常工作,但在iOS9上不能很好地工作。具体表现为:先插A公再插苹果头可以给手机正常充电,而如果不插A公,只插苹果头,过几秒钟手机提示不支持此配件,或者先插苹果头再插A公只有充电符号却没电流。做测试我们是认真

    标签:
    ios10
  • 苹果iOS10兼容性超强:高仿数据线也能正常用

    做测试我们是认真的,苦于手上的手机都已升级iOS10,为了搞清楚问题,只好专门买了一个iOS9.31版本的iPhone5S手机来做实验。问题现象:我们发现一些高仿数据线在iOS10上正常工作,但在iOS9上不能很好地工作。具体表现为:先插A公再插苹果头可以给手机正常充电,而如果不插A公,只插苹果头,

    标签:
    ios10
  • iPhone7网络连接失败?可升级iOS10.0.3来解决

    今日凌晨,苹果突然发布了iOS10.0.3特别版升级,仅针对iPhone7和iPhone7Plus用户,主要是为了修复此前iPhone7系列机型所出现网络数据连接问题。苹果官方表示,如果你经常遇到LTE网络连接失败问题,可通过更新系统来解决。目前,所有iPhone7和iPhone7Plus用户可通过

    标签:
    ios10

热门排行

信息推荐