Nelson 寫些 iOS 開發的東東

用 Objective-C 實作 Redux 架構

| Comments

前言

有一定的程式設計經驗之後,會愈來愈感受到程式架構的重要性,在 iOS app 開發的世界裡,最常見的莫過於 MVC 架構,因為它夠簡單而且是蘋果推薦的架構。但當你的程式越來越龐大,流程越來越複雜的時候,就會發現 MVC 架構已經無法滿足需求了。這幾年最為人所知的就是 MVP / MVVM / VIPER / Coordinator 這幾個模式。

我認為這些模式的著眼點都在於「UI」:它們假設你有一套辦法去存取或修改資料,然後它們提出的方案是關於如何處理「界面顯示 / 使用者互動 / 資料存取」之間的關係。

當程式越長越大,要儲存的狀態越來越多,不同畫面之間需要同步的資料也越來越多,我們該如何管理資料的存取、確保其一致性與正確性呢?Facebook 之前提出了 Flux 架構,後來有人提出改良版的 Redux 架構,不管是 Flux 還是 Redux,其重點都是在於「資料的流動是單向的,資料只有一份,並且只有一個角色可以修改資料」。

Flux / Redux 一開始提出是給網站使用的架構,後來有人把它套用到 iOS 開發,不過我查到的資料都是使用 Swift 實作。無可否認使用 Swift 來實作這套架構的確比較方便,只是我很好奇用 Objective-C 的話會有多困難,以下就是我的一些開發過程。

NSDateFormatter Cheat Sheet for Dash

| Comments

Dash 是 Mac 系統下最好用的 API 文件瀏覽器,我認真覺得每個程式設計師都應該買一套,它真的能大幅提高你的生產力!

它除了可以拿來瀏覽多種 API 文件之外,還能讓使用者自行上傳 cheat sheet,我整理了一個 NSDateFormatter 的 cheat sheet 方便查閱,有需要的人可以參考下圖,下載來使用。

它的 cheat sheet 是 ruby 格式,如果你有發現任何錯誤,或是想要新增更多資料,歡迎修改之後提交給官方

解決 Xcode 無法任意設定字型的問題

| Comments

最近灌了一台全新的電腦,用的是最新的 OS X El Capitan + Xcode 7.1,身為一位開發者,裝好 Xcode 要做的第一件事當然是把佈景主題的字型換成看得順眼的等寬字型(我個人偏好使用 Adobe Source Code Pro)。只是不知道為什麼,當我要調整字型的時候,卻發現字型挑選器無法讓我看到更多的字型:

問了一下社群的朋友,發現有不少安裝「全新的電腦 + Xcode」的人都有遇到這個問題,還好解決方法很簡單:

  1. 切到「~/Library/Developer/Xcode/UserData/FontAndColorThemes」目錄,這裡存放使用者自訂的佈景主題
  2. 用你喜歡的文字編輯器(例如 Sublime Text 或 Atom)開啟你要修改的主題檔
  3. 搜尋 <key>DVTSourceTextSyntaxFonts</key>
  4. 它底下的 dict 就是字型設定了,把這裡的字型名稱取代為你要的字型就可以了
  5. 要注意的是,這裡的字型名稱是「PostScript 名稱」,你可以在「字體簿」裡頭看到這項資訊

字體簿

改好之後存檔再重開 Xcode,世界又和平了 :D

如何在 Debug mode 自動停用 ATS

| Comments

蘋果在 WWDC 2015 上發表了 App Transport Security (ATS),大力推廣網路安全連線。對於這樣的發展,我個人是樂見其成的,也相信在蘋果的影響力之下,安全連線也會進一步的普及。

不過對工程師來說,這代表你又要修改程式,以便符合蘋果規範了。在修改的過程中,我就遇到了一個問題:Release 版的 app 是會走安全連線的,但在 Debug 的時候它是連到本機(localhost),這不是安全連線。該怎麼讓它在 Release / Debug 都能正常連線呢?