標籤: Swift
2019-11-27
漫談 iOS 架構:從 MVC 到 VIPER,以及 Redux
2019-09-21
很榮幸我能在今年的 iPlayground 分享了過去幾年以來,我對於 iOS 架構的一些看法與心得,投影片由此下載,本文則是比較詳細的文字稿。
這幾年大家逐漸重視 iOS 的架構設計,從最基本的 MVC 到開始普及的 MVP / MVVM,到分工細膩的 VIPER,每個 pattern 都有擁護者;近期也有為了解決畫面轉換的 Router / Coordinator 以及為了解決資料一致性的 Redux。
我們 app 早期的架構是 MVC,後來改成 MVVM,後來為了因應複雜的流程所以引進 Coordinator,也引進 Redux 處理資料一致性的問題。
接下來會聊聊這幾種 pattern 及其演化過程。
繼續閱讀 ➜利用 CoreML 來判別圖片
2019-04-23
iOS App 如何支援 RTL 語言
2019-02-25
公司的產品越做越大,前一陣子幫公司的 app 加上阿拉伯文介面,開發過程也累積了一些支援 RTL 語系的心得,藉這個機會跟大家分享。
繼續閱讀 ➜如何為各個 Pod 指定 Swift 版本
2018-09-22
最近升上 Swift 4.2,發現我用到的 Pods 有些還沒支援 4.2 導致編譯錯誤。解決方法也很簡單,只要指定每個 Pod target 的 SWIFT_VERSION 為 4.0 即可。
但是我們不能手動在 Xcode 裡頭調整,因為 CocoaPods 會把 Pods 的 SWIFT_VERSION 設為跟你的 project 一樣,所以下次 pod install 又會被改掉。
如何解決 NSTimer 造成的 retain cycle
2017-04-05
最近在替公司 app 做健康檢查,找到一些 memory leaks 的問題,其中一個就是由 NSTimer 所引起的 retain cycle。
NSTimer 是個很容易造成 retain cycle 的物件,無論是新手或是老手都很可能一個不留意就踩到這個坑。舉個很常見的例子,這樣寫就產生 retain cycle 了: