Swift4 新特性一覽

本篇為 2017 WWDC Session 402 筆記,原視頻在這里

語(yǔ)法特性

  • Swift3中尚洽,如果將主體函數(shù)的變量定義為private,則其extension無(wú)法讀取此變量靶累,必須將其改為filePrivate才可以腺毫,但是權(quán)限又被擴(kuò)大了。在Swift4中挣柬,private變量也可以被其extension讀取潮酒。

  • 類(lèi)和接口的組合語(yǔ)法支持
    例如在代碼中,定義了一個(gè)接口名為Shakeabe邪蛔,并讓UIButton和UISlide來(lái)實(shí)現(xiàn)此接口急黎。但是在之后的變量定義時(shí),如果無(wú)法確定是UIButton類(lèi)型還是Slide類(lèi)型侧到,又不想寫(xiě)多行條件語(yǔ)句來(lái)判斷勃教,可以在Swift4中用如下方法來(lái)搞定:

var targetControl: [UIControl & Shakeable]

再例如,在OC中匠抗,我們會(huì)有如下代碼:

@property (weak) NSView<NSTextInputClient> *client;

在Swift4中故源,直接可以用以下語(yǔ)句來(lái)實(shí)現(xiàn)

var client: [NSView & NSTextInputClient]?

工具附加特性

  • XCode提供了refactor功能

編譯相關(guān)

  • 加快了編譯速度
  • Swift3.2可以和Swift4進(jìn)行共存,并在XCode中提供版本選擇
  • 提前編譯Swift-OC Bridge汞贸,加快速度
  • 不再單獨(dú)進(jìn)行Indexing绳军,每次編譯時(shí)會(huì)自動(dòng)index
  • 在Size方面自動(dòng)過(guò)濾掉不用的代碼,減少體積
  • 可以選擇 "Strip Swift Symbol"來(lái)達(dá)到減少編譯后的體積

String相關(guān)

  • String的很多characters的簡(jiǎn)介操作直接升級(jí)為對(duì)String的直接操作,String本身變成了Characters Collector矢腻,例如:
Swift3:
let values = "One, Tow,Three...."
var i = values.characters.startIndex

在Swift4中门驾,變成了

Swift4:
let values = "One, Tow,Three...."
var i = values.startIndex
  • 在遍歷String的過(guò)程中,如果從下標(biāo)i的string末尾多柑,通常寫(xiě)成:
values[i ..< values.endIndex]

在Swift4中猎唁,直接改成了:

value[i...]

利用i...這種類(lèi)型,會(huì)自動(dòng)匹配到string結(jié)尾

  • 在String的基礎(chǔ)上,增加了SubString類(lèi)型诫隅,為了共享存儲(chǔ)提高代碼執(zhí)行效率腐魂。但是一般情況下不需要手動(dòng)來(lái)進(jìn)行創(chuàng)建,會(huì)根據(jù)String的一些extract相關(guān)方法自動(dòng)返回逐纬,其方法列表也和String基本保持一致蛔屹。

  • Swift4支持了分段長(zhǎng)字符的表達(dá)方式,例如以前為:

var str = "Q: How does the project \(projectName) do in this process? A: It followed these steps: \(step1), \(step2),\(step3)... Q: That's very helpful."

在Swift4中可以寫(xiě)成:

var str = """
                  Q: How does the project \(projectName) do in this process? 
                  A: It followed these steps: \(step1), \(step2),\(step3)... 
                  Q: That's very helpful.
          """

看起來(lái)更加的結(jié)構(gòu)化豁生。

其余特性

  • 強(qiáng)制要求對(duì)內(nèi)存變量的訪問(wèn)具有互斥性
    例如兔毒,在遍歷一個(gè)數(shù)組的過(guò)程中如果同時(shí)在循環(huán)內(nèi)對(duì)數(shù)組進(jìn)行數(shù)據(jù)操作,會(huì)在編譯時(shí)報(bào)錯(cuò)甸箱。

個(gè)人感想

當(dāng)然育叁,由于Session的時(shí)間限制,肯定沒(méi)有把所有Swift4的特性說(shuō)全芍殖。僅就列出來(lái)的這幾個(gè)豪嗽,我個(gè)人比較喜歡的有 XCode支持Swift的refactor,Swift編譯速度加快豌骏,以及String本身包含了Characters Collector這幾個(gè)龟梦。
由于Swift的開(kāi)源屬性,也使得Swif借由社區(qū)的力量越來(lái)越好用以及越來(lái)越強(qiáng)大窃躲。這個(gè)對(duì)iOS開(kāi)發(fā)者來(lái)說(shuō)是一個(gè)天大的好事计贰。
再加上最近WWDC上release出來(lái)的幾個(gè)強(qiáng)大的SDK,例如CoreML蒂窒,ARKit等躁倒,個(gè)人覺(jué)得iOS開(kāi)發(fā)者的好日子來(lái)了。

其它推薦

如果你是Swift新手洒琢,可以參考下我之前寫(xiě)的30天30個(gè)Swift小App
相關(guān)Github地址為:
https://github.com/nimomeng/30-swift-projects-in-30-days

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末秧秉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子纬凤,更是在濱河造成了極大的恐慌福贞,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件停士,死亡現(xiàn)場(chǎng)離奇詭異挖帘,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)恋技,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)拇舀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蜻底,你說(shuō)我怎么就攤上這事骄崩。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵要拂,是天一觀的道長(zhǎng)抠璃。 經(jīng)常有香客問(wèn)我,道長(zhǎng)脱惰,這世上最難降的妖魔是什么搏嗡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮拉一,結(jié)果婚禮上采盒,老公的妹妹穿的比我還像新娘。我一直安慰自己蔚润,他們只是感情好磅氨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著嫡纠,像睡著了一般烦租。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上货徙,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天左权,我揣著相機(jī)與錄音皮胡,去河邊找鬼痴颊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛屡贺,可吹牛的內(nèi)容都是我干的蠢棱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼甩栈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼泻仙!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起量没,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤玉转,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后殴蹄,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體究抓,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年袭灯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刺下。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡稽荧,死狀恐怖橘茉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤畅卓,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布擅腰,位于F島的核電站,受9級(jí)特大地震影響翁潘,放射性物質(zhì)發(fā)生泄漏惕鼓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一唐础、第九天 我趴在偏房一處隱蔽的房頂上張望箱歧。 院中可真熱鬧,春花似錦一膨、人聲如沸呀邢。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)价淌。三九已至,卻和暖如春瞒津,著一層夾襖步出監(jiān)牢的瞬間蝉衣,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工巷蚪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留病毡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓屁柏,卻偏偏與公主長(zhǎng)得像啦膜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淌喻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 作者:劉鐸本文為原創(chuàng)文章僧家,轉(zhuǎn)載請(qǐng)注明作者及出處 WWDC 2017 帶來(lái)了很多驚喜。Swift 4 也伴隨著 Xc...
    滬江技術(shù)學(xué)院閱讀 31,859評(píng)論 7 127
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)裸删、插件八拱、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,103評(píng)論 4 62
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)涯塔,斷路器肌稻,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 你知道了嗎?我是一個(gè)農(nóng)村來(lái)的菇?jīng)錾怂皇翘赝庀虻破肌倓偝錾鐣?huì)的我,好多搞不懂的東西和事情每聪。我很多時(shí)候又不好意思問(wèn)人旦棉,怕...
    樂(lè)樂(lè)隨心室閱讀 600評(píng)論 0 0
  • 提起石塘嘴绑洛、大戲救斑、太平劇院、南北行真屯、十二少這些字眼脸候,大概有點(diǎn)懵,看字都認(rèn)識(shí)绑蔫,合起來(lái)不知道說(shuō)的是什么运沦,但自由...
    佚名anonymity閱讀 1,025評(píng)論 1 8