全国咨询/投诉热线:400-618-4000

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

更新时间:2016年06月15日12时18分 来源:传智播客 浏览次数:

  前言


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


  iMessage


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

  链接:http://pan.baidu.com/s/1i5tZFNJ  密码: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 特性,可以查看: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 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 从一个属性到一个操作符


  更多详情请查看:https://github.com/apple/swift-evolution/tree/master/proposals


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


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


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


  有关iMessage及最新Xcode改版的相关功能的课程视频下载链接如下:链接:http://pan.baidu.com/s/1c2t3SGS 密码:di7k


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


javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额