全國咨詢/投訴熱線: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


  開發者大會仍在進行中,后續教程持續更新,敬請期待!


人妻系列无码专区_漂亮人妻被中出中文字幕_人妻中文制服巨乳中文