老司機 iOS 週報 #1

老司機iOS週報發表於2018-01-09

老司機 iOS 週報,只為你呈現有價值的資訊。

有建議或者有資訊推薦可以到我們 github 下面提 issue。

新聞

致廣大使用者關於 iPhone 電池及效能的說明

蘋果對電池老化會導致 iPhone 效能下降做的溝通說明。表示 從來沒有、也永遠不會通過任何手段,來有意縮短任何 Apple 產品的使用壽命,更不會降低使用者體驗來迫使大家升級裝置。為了安撫大家的不滿,蘋果將更換電池的費用下調了 390 元,從 608 元降到 218 元。不過這個降價不是永久性的,只持續到 18 年 12 月。

Swift 快要可以和 Python 無縫互動了

這是 Chris Lattner 大神到 Google 之後的第一個提案,讓 Swift 可以和 Python 無縫互動,Chris 每次提案基本上都會帶上 Demo,這一次也不例外,只用了不到一千行程式碼就把互動邏輯給實現了出來?‍♂️,大家可以直接下載這個 playground 試一下用 Swift 寫 Python 是什麼感覺。

另外 Chris 還提出使用一套 DynamicMemberProtocol 去優化了 Python 互動的語法, 與 Python 的互動都是依賴於字串,畫風大概是這樣的 let a = np.call(member: "arange", args: 15).call(member: "reshape", args: 3, 5),如果實現了 DynamicMemberProtocol 的話,就可以在 Swift 裡像 Python 程式碼一樣呼叫 Python 的方法 np.arange(15).reshape(3, 5),編譯器不會給遵循了這個協議的物件做靜態檢查,但這本質上只是一個語法糖,編譯時還是會轉化為前者的格式去呼叫。

蘋果宣佈收購 Buddybuild

Buddybuild 是著名的自動化 CI 託管服務平臺,蘋果收購後 Buddybuild 公司將會加入 Xcode 團隊。期待 Xcode 對 CI 的支援將會更進一步。

Swift Weekly Brief 宣佈停更

Jesse Squires 宣佈停止更新 Swift Weekly,一直以來這個 News Letter 都是我瞭解 Swift 開發進度最主要的途徑,現在要停更了,確實很可惜。

Jesse 提到停止更新的理由,主要是因為當初開始 Swift Weekly 的時候,Swift 剛剛開源,對於功能和設計的討論非常非常多,並且 Mailing List 這種形式讓人很難找到有價值的內容,所以這樣一個 News Letter 在當時是非常有意義的。但現在 Swift 已經逐漸成熟,社群裡的討論變得越來越深入,而且 Swift 最近還從 Mailing List 遷移到了論壇上,相關資訊的獲取已經變得越來越方便了,Swift Weekly 的存在價值也已經大不如前了,所以才打算停止更新。

但停更只是個人意義上的停更,Jesse 歡迎社群的人接手過去繼續更新,並且在原文介紹了一系列接手的注意事項。

Apple 更新 App Store Review Guidelines,增加 VPN 和 loot boxes 等條款

Apple 於 2017.12.21 更新了其 App Store Review Guidelines. 主要變化集中在以下幾個方面:

  • 新上架 App 引入 pre-order 機制
  • 虛擬物品抽獎必須公佈各項概率(loot boxes)
  • VPN 類應用如需在特定地區釋出,必須提供相應許可資訊
  • 符合特定前提下,允許通過模板生成的 App 上架釋出

LiberiOS jailbreak for iOS 11 officially released, includes support for the iPhone X

LiberiOS 正式釋出 iOS 11.0 - 11.1.2 的越獄工具,包括對 iPhone X 的支援。

文章

iOS 知識小集

國內知名開發者 @南峰子 把過去微博上發出來的 iOS 開發知識整理了出來,發在了 GitHub 上,據介紹這一系列的微博已經有 1000w 的閱讀量了!!!

Swift Tips

跟前面 iOS Tips 小集類似的專案,不同的是這個專案裡講的是一些 Swift 的小 Tips,裡面 #7,#22 等技巧我都有實際用於專案中,推薦大家看一下。

Weak Arrays

objc.io 在這篇部落格裡簡單介紹了在 Swift 中自定義弱引用陣列的一種實現方式。

When and how to use Value and Reference Types in Swift

全面介紹了 Swift 中的值型別和引用型別的使用區別。

Building an enum based analytics system in swift

使用 enum 和 protocol 構建安全、高效、靈活的 Swift 事件統計系統。

Measuring Swift compile times in Xcode 9

對 Xcode 進行一些配置看看哪些 Swift 程式碼拖慢了你的編譯速度。

工具

App Host

一個輕量級的包託管網站,app-host 主要用於 iOS 和 Android 的包管理,作用類似於fir.im,不同之處是可以自由部署在內網,方便了公司專案保密。並且程式碼開源也可以方便根據各自需求進行定製化開發。

XcodeGen

XcodeGen 是一個根據已有的程式碼檔案 / 目錄和簡單的配置檔案來生成 Xcode project 的開源工具,快速生成模板工程、將 .xcodeproj 從 Git 追蹤中忽略、方便地和他人分享自己的工程配置等,無限可能,等你嘗試。

程式碼

WCDB Swift

WCDB 是微信團隊開源的 SQLite 資料庫,近日放出 WCDB Swift 的 1.0 正式版,WCDB Swift 使用純 Swift 編寫,幾乎不包含 Cocoa 的程式碼,且與 ObjC 版保持完全一致的功能。其基於 Swift 4.0 的 Codable 協議實現模型繫結,通過建立 Swift 型別與資料庫表之間的對映關係,使得開發者可以通過類物件直接運算元據庫。

雖然專案沒有實際使用於微信中,但這只是第一步嘛,並且文章最後還表示測試用例的程式碼覆蓋率已經達到了 91.34% 了?,所以大家真的可以考慮在專案中使用。

Task automation in Swift with Sake

iOS 還沒有使用 Swift 語言編寫的自動化工具,目前流行的都是採用 bash、ruby 編寫的。於是作者嘗試利用 Swift 寫了 Sake。這個專案目前還處於早期。

Fluid Slider

Ramotion 出品的滑動控制元件。

微信跳一跳可以直接更改分數,POST 請求沒有校驗

v2ex 上也有獲得微信小遊戲跳一跳原始碼的討論。

Swift 進階

Swift 經典書籍《Swift 進階》更新了 Swift 4 的相關內容。

本期編輯

@沒故事的卓同學@四娘@mmoaay@享耳先森@EyreFree

相關文章