Quantcast
Channel: Nelson 寫些 iOS 開發的東東
Browsing all 20 articles
Browse latest View live

Image may be NSFW.
Clik here to view.

如何正確設定 AFNetworking 的安全連線

TL;DR前一陣子 AFNetworking被爆出存在安全性漏洞,它們也針對這件事情發出聲明稿。簡單的說,就是建議開發者使用最新版的 AFNetworking,並且啟用安全連線。不過它們也承認這一部份的說明文件沒有寫得很齊全,所以困擾了不少開發者。今天花了一點時間研究,順手把它記錄下來。安全相關的東西不是我的專長,所以如果有任何錯誤的地方,請留言告訴我。取得安全憑證1....

View Article


ReactiveCocoa 範例 - 處理網路請求

前言最近這半年來我開始使用 ReactiveCocoa開發 APP,覺得它真的是很適合一般的 APP 使用情境,在我看來,它可以很漂亮的解決 當 XX 發生的時候,就執行 YY的需求。今天這篇文章來分享一下,我是如何使用 ReactiveCocoa強化舊有的網路請求功能。我是用 AFNetworking來實現網路請求功能,然後用 Mantle來建立我的 model。現在我有個...

View Article


開發產品學到的一些事(上)

這幾年都在 start-up...

View Article

開發產品學到的一些事(下)

一個 APP 開發工程師在 start-up 打滾幾年之後,得到的一些心得跟體會,上集在這裡。善用追蹤工具做任何決定之前都要有所本,不要突然「通靈」了就做出莫名其妙的決策。那要根據什麼做決定呢?很簡單,讓數據說話。善用至少一款追蹤工具(GA、Mixpanel、Flurry、Kissmetrics、Keen...

View Article

產生 Auto Layout Constraints 的程式碼要放在哪裡

由於種種原因,所以到目前為止,我在公司的專案還是沒有用 Interface Builder,所有的 UI 完全用程式碼一行一行刻出來,當然這也包含 auto layout 相關的程式碼。如果是一個 UIViewController的話,程式碼架構大概長這樣:- (void)viewDidLoad { [super viewDidLoad]; [self setupConstraints]; } -...

View Article


必備的 Xcode plugins

不得不說 Xcode 的功能跟其他 IDE 相比,真的挺陽春的,多虧網路上一堆熱心的開發者,幫忙開發了不少 plugins,稍稍補強了 Xcode 的功能。底下就列出我目前有用到的 plugins,當作一個備忘,也歡迎大家跟我分享好用的 plugins。強烈推薦使用 Alcatraz管理這些 plugins!Backlight高亮度當前列,這是很多編輯器都有的功能,不知道為何 Xcode...

View Article

自動解決 Xcode project file 的合併衝突

之前寫過一篇文章,分享如何 讓 Xcode 專案易於版本控制的方法,最近又看到另外一個小技巧,跟我原本的方法結合起來的話,基本上就萬無一失了!這個方法的步驟如下:建立一個 .gitattributes檔輸入 *.pbxproj merge=unioncommit 這個 .gitattributes檔這些動作告訴 Git 「針對 .pbxproj 檔要使用 union 的 merge...

View Article

如何在 Debug mode 自動停用 ATS

蘋果在 WWDC 2015 上發表了 App Transport Security (ATS),大力推廣網路安全連線。對於這樣的發展,我個人是樂見其成的,也相信在蘋果的影響力之下,安全連線也會進一步的普及。不過對工程師來說,這代表你又要修改程式,以便符合蘋果規範了。在修改的過程中,我就遇到了一個問題:Release 版的 app 是會走安全連線的,但在 Debug...

View Article


Image may be NSFW.
Clik here to view.

我的第一個 Xcode plugin - Auto Highlight Symbol

前不久我寫了一篇文章記錄我有在用的 Xcode plugins,看到網路上那麼多的 plugins 都開放原始碼,讓我不由得也手癢想要寫一個自己來用,所以我的第一個 Xcode plugin 就這麼產生了。Auto Highlight Symbol在使用 Xcode 看程式碼的時候,都很希望它能像其他 IDE 一樣,有自動高亮度同一個變數的功能(例如 Sublime...

View Article


Image may be NSFW.
Clik here to view.

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

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

View Article

Image may be NSFW.
Clik here to view.

NSDateFormatter Cheat Sheet for Dash

Dash是 Mac 系統下最好用的 API 文件瀏覽器,我認真覺得每個程式設計師都應該買一套,它真的能大幅提高你的生產力!它除了可以拿來瀏覽多種 API 文件之外,還能讓使用者自行上傳 cheat sheet,我整理了一個 NSDateFormatter的 cheat sheet 方便查閱,有需要的人可以參考下圖,下載來使用。它的 cheat sheet 是 ruby...

View Article

Image may be NSFW.
Clik here to view.

用 Objective-C 實作 Redux 架構

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

View Article

讓 Xcode 8 再度支援 plugins

眾所皆知的,Xcode 8 把之前的 plugins 都擋掉了,然後推出了 Source Editor Extension,但 Source Editor Extension 的能力還很有限,基本上只能對「文字」操作。所以就有人提出了一個解法,把 Xcode 8 app unsign,這樣就能讓 plugins 再度作用了。具體作法如下:下載 MakeXcodePluginsWorkchmod...

View Article


為何 Startup 不該用 Swift

最近跟朋友聊天,聊到說我不建議 startup 使用 Swift 開發 app,趁著有空紀錄一下為何我會這麼說。還是得先聲明一下,Swift 是一個很酷的語言,我沒有不喜歡它,只是站在公司的角度,我認為 startup 不應該使用 Swift 開發它們的主力產品,而是應該用 Objective-C。主要是因為以下幾點理由:Swift 還不穩定Swift 是一個很新的語言,大家都還在摸索怎樣才是...

View Article

一個 AFNetworking 的 retain cycle 問題

AFNetworking封裝了網路連線的許多工作,讓 iOS/Mac 開發者可以用簡潔的寫法去處理連線,但你知道要如何正確使用,才不會出現 retain cycle 嗎?舉個例子舉個最簡單的例子,我們可能會在自訂的 UIViewController 裡頭建立一個 AFHTTPSessionManager,透過它來進行網路連線,大部分的寫法大概如下:@interface...

View Article


如何解決 NSTimer 造成的 retain cycle

故事是這麼開始的最近在替公司 app 做健康檢查,找到一些 memory leaks 的問題,其中一個就是由 NSTimer所引起的 retain cycle。NSTimer是個很容易造成 retain cycle 的物件,無論是新手或是老手都很可能一個不留意就踩到這個坑。舉個很常見的例子,這樣寫就產生 retain cycle 了:@interface MyViewController()...

View Article

Image may be NSFW.
Clik here to view.

為何 Git-Flow 可能不適合你

什麼是 Git-FlowGit-Flow是 Vincent Driessen在 2010 年提出的一套 Git 分支模型,簡單的說,它有 master跟 develop這兩個主要的分支,以及 feature / release / hotfix這三個支援型分支,至於各個分支的用途看圖片應該就懂了,或是看原文有更詳細的說明。由於當時大家對如何使用 Git...

View Article


如何為各個 Pod 指定 Swift 版本

最近升上 Swift 4.2,發現我用到的 Pods 有些還沒支援 4.2 導致編譯錯誤。解決方法也很簡單,只要指定每個 Pod target 的 SWIFT_VERSION為 4.0即可。但是我們不能手動在 Xcode 裡頭調整,因為 CocoaPods 會把 Pods 的 SWIFT_VERSION設為跟你的 project 一樣,所以下次 pod install又會被改掉。我們可以在...

View Article

iOS App 如何支援 RTL 語言

公司的產品越做越大,前一陣子幫公司的 app 加上阿拉伯文介面,開發過程也累積了一些支援 RTL 語系的心得,藉這個機會跟大家分享。找到 Native Speaker對於書寫方向是「從左到右」的我們來說,最困難的其實不是看不懂這個語言,而是不知道這樣的 layout 是否正確,因為 layout 絕對不是全部都無腦的換成「從右到左」就好。所以如果情況許可,最好找個 native speaker...

View Article

本站搬家了

為了更高的彈性以及更好的資料自主性,我把部落格搬到 GitHub Page,這邊將不再維護。想看最新文章的朋友,請移駕到 https://chiahsien.github.io/,它也有提供 RSS 訂閱服務喔。

View Article
Browsing all 20 articles
Browse latest View live