💬 Pofat 的話
跟大家分享喜訊,波報發行至今近兩個月,訂閱數在上周超過 500, 同時也獲得了頭兩位的贊助支持者!這對我來說是很大的鼓舞,代表從自我學習出發的波報實際上也對大家有幫助(吧?),非常感謝🙏。
趁機呼籲 Swift Package Index 也在徵求大家的協助,詳情請往下。
🌎 On Swift Community
Swift Package Index 需要大家的協助
開源免費的服務得來不易,有能力的人請一同支持 Swift Package Index。
做為一個非官方 SPM 網站, Swift Package Index 一直提供了很棒的 pakcage 索引服務,前陣子更還支援了在網站上生成 DocC 格式的文件。
目前雖還不到斷炊關頭,但是現況若不再改變,主要經營者 Dave Verwer 勢必要做出困難的決定。若你有用過這個網站且希望能繼續用下去,請考慮捐款支持。


ChaoCode - 優質的 Swift 教學頻道
發稿前夕發現影片品質良好,解說清晰的教學頻道,
Swift language announcements from WWDC22
最近產出很多精彩文章的前 SwiftUI 工程師 Natalia Panferova 和 Matthaus Woolard 共同寫了這一年來 Swift 的進化總結,搭配 Feli 的生動插畫,頗似戴老師以圖佐文的行文風格,戴老師再度戴領了潮流啊!
這是 Feli 插畫的縮時攝影

這是戴老師最近演講的插畫
Xcode 14 Beta 3 災害一覽
首先,裝了就會消滅所有的模擬器(包含舊版)


此外,HStack
和 VStack
在這版「突然」不遵循 iOS 16 新出的 Layout
協議,所以 WWDC 裡以動畫切換兩者排版的範例程式會直接編譯不過 ☺️,如下:
暫時解法是先用非正式的 API

MainActor 不在 Main Thread !?
這是一個 bug ,當從 MainActor
跳入 await
的 getter 後沒有正確地跳回來 MainActor
,於是就出現了不在 main thread 的奇怪狀況,目前在 main branch 已被修復。


How iOS 16 makes your app faster
Emerge Tools 是家開發行動應用性能工具的公司,它們的部落格文章雖然不多但篇篇精彩,高度推薦!
它們在 2021 年就指出了 Protocol 的遵循出人意料地對 Swfit 會造成性能影響,這也是 WWDC22 Improve app size and runtime performance 裡宣布的一大改善重點。
這篇文章總結了今年 iOS 16 如何讓你幹一年不如等一年 app 變快,以及附上了測試結果給大家參考,有興趣的也可以回顧去年同期的 iOS 15 如何讓 app 變快。
🗣️ On Swift Forum
Swift 5.7 regression in async call performance
Swift 5.7 才包含的 SE-0338 引發了性能問題,在 Beta 3 更為加劇。
SE-0338 的改變動機來自於 actor
「太黏」。原本非 actor
的 async
方法一旦在 actor
中被呼叫就會被排入其 executor 中,如此切換 executor 的頻率就比較低。但這也有對應的風險,如果呼叫的方法做太久則會影響 actor
本身的其它工作,因此 SE-0338 將這類方法跳回非 actor
的 general executor 上執行,不過這些跳躍帶來了新的性能問題。


Should you ever have a .none
case in an enum?
自己定義的 enum 適合有 .none
嗎?
當把這 enum 放入 Optional ,在 switch 時便會遇到兩層的 .none
,討論串中提供了實用的解法,即使用?:
[Pitch] Attribute to silence Deprecation Warnings for a specified scope
一個可以在目標 scope 內消除 deprecation warning 的新標記,對於這想法我持保留態度,但是附帶的 PR 是個適合了解如何實做新標記 (attribute)的範例。
🎉 Swift commits
[SE-0361] Enable bound generic extensions
允許了以下語法也已 cherry-pick 至 5.7, 相信下一版的 Beta 就可以用到了。
Emit actor hop as part of call to the getter
修復了上面提到 MainActor 不在 main thread 的問題。把返回的資訊注入到 getter ,做完後再跳回來。
🤪 Pofat 選推
太生動惹吧
RoomPlan 幫你一秒整理好房間(?

成為資深工程師的小撇步 - 1
成為資深工程師的小撇步 - 2