iOS 12 開(kāi)發(fā)者筆記 @WWDC 18, Day 2

WWDC 第二天,為大家?guī)?lái) What's new in Swift 以及 What's new in Cocoa Touch 兩個(gè) 重要 Session 的精華內(nèi)容。

What's new in Swift

分兩個(gè)部分:Swift環(huán)境 和 Swift 語(yǔ)言改進(jìn)

Swift 環(huán)境

  1. Xcode 9.4 搭載的是 Swift 4.1.2

  2. Xcode 10 Beta 中大家可以嘗試 Swift 4.2

  3. Swift 開(kāi)源社區(qū)討論轉(zhuǎn)到:forums.swift.org

  4. Swift 二進(jìn)制兼容在 Swift 5 2019年早期實(shí)現(xiàn)

  5. Swift 4.2 同時(shí)支持 Swift 3, Swift 4 和 Swift 4.2的代碼編譯。

  6. Swift 4.2 是最后一個(gè)支持 Swift 3 兼容模式的版本,我們?nèi)コZ(yǔ)言和標(biāo)準(zhǔn)庫(kù)的警告要繼續(xù)進(jìn)行下去。

  7. Swift 編譯更快了,這個(gè)我們?cè)?Xcode 9.3 中已經(jīng)有感受到了。

  8. 從Optimization Level,提取出 Compilation Mode(增量 vs Whole Module),這表明我之前實(shí)驗(yàn)的 SWIFT_WHOLE_MODULE_OPTIMIZATION 選項(xiàng)正式在Compilation Mode 中開(kāi)啟了,同時(shí)需要注意 Whole Module Compilation Mode 雖然速度變快了,但是對(duì)于內(nèi)聯(lián)函數(shù)和泛型調(diào)試的支持會(huì)變差。

9. 運(yùn)行時(shí)優(yōu)化:retain/release合并優(yōu)化,短字符串內(nèi)存和性能優(yōu)化

10. 代碼大小優(yōu)化可以考慮使用:Optimization Level:Optimize for Size。我覺(jué)得一般不會(huì)用,5%性能損失,節(jié)省10%到30%大小。

Swift 語(yǔ)言改進(jìn)

1. Swift 4.2 特性:聲明實(shí)現(xiàn) CaseIterable 自動(dòng)合成枚舉類(lèi)型靜態(tài)屬性 allCases

2. Swift 4.1 特性:Conditional Conformance [http://www.itdecent.cn/p/b6bc72bc5b98]

3. Swift 4.1 特性:合成的 Equatable 和 Hashable [http://www.itdecent.cn/p/2aa31c90abbd]

4. Swift 4.2 特性:func hash(into hasher: inout Hasher),每次Run都不一樣,更安全??梢酝ㄟ^(guò) Scheme 中的環(huán)境變量 SWIFT_DETERMINISTIC_HASHING=1來(lái)關(guān)閉

5. Swift 4.2 特性:隨機(jī)數(shù) API:Int.random(in: 0..< 10)greetings.randomElement(), greetings.shuffled(), RandomNumberGenerator

6. Swift 4.1 特性:條件編譯新功能:#if canImport(UIKit) #if hasTargetEnvironment(simulator)

7. Implicitly Unwrapped Optional 討論,更少的地方允許被使用。

8. Memory同時(shí)訪問(wèn)檢查(編譯期 & 運(yùn)行時(shí)),Exclusive Access to Memory 有選項(xiàng)可以選擇在什么Build開(kāi)啟。

What's new in Cocoa Touch

底層性能優(yōu)化

  1. 滾動(dòng)優(yōu)化:Prefetching 是個(gè)老API 用于預(yù)先生成Cell,iOS 12 有更聰明的實(shí)現(xiàn),錯(cuò)峰以避免CPU Peek。另外,iOS 12通過(guò)通用的底層優(yōu)化,來(lái)使?jié)L動(dòng)的處理盡量能趕上每一幀的時(shí)間。
  2. 內(nèi)存優(yōu)化:Automatic Backing Store 新特性。API 默認(rèn)自動(dòng)提供。例如灰度圖使用8位,而不是32位。
  3. Auto Layout性能提升:有相互約束關(guān)系的兄弟視圖以及嵌套關(guān)系視圖的 Auto Layout 的算法都從指數(shù)復(fù)雜度優(yōu)化為線性復(fù)雜度

API微調(diào)

1.嵌套類(lèi)型:有從屬關(guān)系的獨(dú)立類(lèi)型,在新的API中,實(shí)現(xiàn)成嵌套關(guān)系:例如UIApplication和State
2.嵌套常量:常量們都找到了組織,以靜態(tài)常量屬性形式存在于某個(gè)類(lèi)中,來(lái)替換全局常量的形式。例如UIFloatRange.zero
3.嵌套函數(shù):全局函數(shù)->成員函數(shù)。例如image.pngData()
4.FromString系列函數(shù)的主體,都實(shí)現(xiàn)了Codable,同時(shí)都支持了Debug Printing。
例如:let encoded = JSONEncoder().encode(CGPoint(x:0, y:0)) 以及 print(CGPoint(x:0, y:0))
5.新的 NSSecureCoding API,提供默認(rèn)的安全行為。

新特性簡(jiǎn)介

1.Notification:分組、鎖屏設(shè)定
2.Messages:這個(gè)我們忽略吧,功能都很好,就差微信干掉Message了。
3.能夠?yàn)橛脩羯蓮?qiáng)密碼,存在Keychain。 驗(yàn)證碼自動(dòng)輸入,安卓機(jī)玩爛的功能。
4.Siri Shortcuts:NSUserActivity、SiriKit Intent、Custom Intent。
以上這些新特性,后續(xù)有Session詳解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明AI閱讀 16,201評(píng)論 3 119
  • 當(dāng)動(dòng)人的紅酒, 吻過(guò)華麗的高腳杯, 注定酒與杯的心情,都不再平靜。 當(dāng)傻傻的你, 遇見(jiàn)聰慧的她, 相信這段回憶,將...
    隨心日記閱讀 503評(píng)論 2 4
  • 第一步:設(shè)置出價(jià)方式 1.拍賣(mài) Auction-style , 拍賣(mài)在下線前會(huì)有較高的曝光,賣(mài)家一般可以通過(guò)曝光進(jìn)...
    小白兔乖乖_5f9e閱讀 2,149評(píng)論 0 0
  • 從開(kāi)始加入這個(gè)大家庭以來(lái),都是早上早早醒來(lái)邊品讀大家的杰作,邊理順利自己前晚構(gòu)思,從寫(xiě)下成長(zhǎng)計(jì)劃開(kāi)始新的一天,但是...
    恰逢此時(shí)路過(guò)閱讀 367評(píng)論 0 1
  • 夜深人靜的時(shí)候,總會(huì)莫名其妙地陷入無(wú)限循環(huán)的對(duì)比中。據(jù)說(shuō),人在開(kāi)始整理回憶的時(shí)候就在慢慢老去。我不知道自己是否還年...
    等丫丫的豆豆閱讀 306評(píng)論 0 0

友情鏈接更多精彩內(nèi)容