Nelson 寫些 iOS 開發的東東

Posts match “ Xcode ” tag:

學習 iOS App 開發的一些心得

| Comments

事前準備

進入這個世界,有些東西是你需要事先準備好的,說穿了,就是你的設備跟知識。

一台蘋果電腦

開發蘋果的東西,沒有蘋果電腦怎麼行呢?如果你手頭拮据的話,買台 Mac Mini 就能動工了,但如果預算足夠的話,建議買台 MacBook Air 或 MacBook Pro,方便你能隨時移動,走到哪就寫到哪。至於要買 Pro 或是 Air,那就看你需求跟預算了,反正若只是要開發程式,這兩者都綽綽有餘。

熟悉 C 語言以及物件導向

開發 iOS App 用的程式語言是 Objective-C,它是 C 語言的 superset,支援所有 C 語言的功能,並且加上物件導向的能力。所以你只要熟悉 C 語言以及物件導向的觀念,就可以快速上手 Objective-C,剩下的就只是習慣 Objective-C 的語法及特性而已。

英文能力不能太差

Objective-C 有個特色就是它寫出來的程式碼「就像在閱讀一段句子、一篇文章」,你怎麼說話的,就怎麼寫程式 - 當然,指的是用英文說話。所以你英文能力不能太差,否則你將無法寫出順暢的程式碼,也無法輕易看懂別人的程式碼。這是它跟其他常見的程式語言最大的不同點,一開始可能會不太適應,但久了之後你會愛上它的。另外你會需要看大量的文件,這些幾乎都是英文,所以需要有一定的英文底子。


讓 Xcode 專案易於版本控制的方法

| Comments

若是你有多人協同開發 Mac/iOS 專案,並且有使用版本控制系統的話,一定會在合併 Xcode 專案檔時吃到不少苦頭,一個不小心就會誤刪某些檔案的參照,或是重複某些檔案的參照。

最近發現一個好用的 script,可以用它來幫忙「根據檔名排序」專案檔裡頭的檔案。原本你的專案可能是混雜了檔案與群組資料夾,但經過這個 script 排序之後,專案會變成所有的群組資料夾排在最前面,接著才是檔案,而且群組資料夾裡頭的內容也會被排序。

因為被排序過,所以在合併不同版本的時候,就可以容易看出哪些項目是新增或刪除,若是不小心重複參照了某些檔案,也比較容易找出來。

讓 Xcode 更聰明的自動補完程式碼

| Comments

Xcode 是 MAC 開發者每天都得面對的工具,工欲善其事必先利其器,既然得每天面對,那當然要把它調教地人性化一點,好讓自己生產力++

現在絕大多數的 IDE 都有內建「程式碼自動補完」的功能,開發者只要輸入開頭幾個字,IDE 就會聰明的幫你補完變數或函式名稱。雖然 Xcode 這一方面一直做的不是很好,但它的進步是有目共睹的,在 Xcode 5 裡頭已經變得很不錯了。

但,科技始終來自於惰性!最近有人開發出一個名叫「FuzzyAutocompletePlugin」的 Xcode 外掛,讓自動補完的功能大大升級。裝了它之後,你只要輸入幾個字母 (甚至不用從開頭輸入,只要順序對就好),它就會幫你列出含有這些字母的變數或函式。

在 Release 時才上傳檔案到 Crashlytics

| Comments

我們的 iOS 專案是用 Crashlytics 來收集當機記錄,但根據官方的教學,它會在你每次 build 之後就把檔案上傳。但這對我來說是很不必要的,因為大部份開發階段遇到的當機,大概都知道是怎麼產生的,所以我只需要在 Release 時上傳到 Crashlytics 就好。

爬了一下文,找到一個做法可以滿足我的需求,只要在「Build Phase」把「Run Script」改成如下即可。

releaseConfig="Release"

if [ "$releaseConfig" = "${CONFIGURATION}" ]; then
./Crashlytics.framework/run [your_crashlytics_key]
fi

其中 [your_crashlytics_key] 就是你申請的那一串 API KEY。

2

Xcode 底下如何統一程式碼風格

| Comments

在網路上已經有很多人分享各種 Objective-C 的程式碼風格,例如 NYTimesGitHubRay Wenderlich,我相信各位讀者公司應該也有一套自己的規範(如果沒有,那請趕快制定一套吧!),所以今天我不是要分享我們的程式碼規範,而是要來說說要怎麼將不符合規範的程式碼轉成合乎規範。

我研究了一些程式碼美化的工具,最後選用的是 BBUncrustifyPlugin-Xcode 這個 Xcode plugin,它最早只有支援 Uncrustify,最近也開始支援 ClangFormat 了,我個人是比較偏好 Uncrustify,因為它可以調整的選項比較多。

讓 Xcode 自動去除行尾空白

| Comments

為了達到程式碼風格一致,在寫程式之前,我一定會在我的 Xcode 設定至少以下兩個設定:

  1. 固定 Tab 寬度,並將 Tab 轉成 Space。
  2. 自動刪除行尾空白。

我發現第一點很多人都會記得設定,但是第二點卻有不少人會忘記,甚至有些人不知道如何設定。以下一張圖教你怎麼做,如果你還沒設定過的話,就趁這個機會設定一下吧,對你只有好處沒有壞處的!

Text_Editing-6

更方便的在 Xcode 插入顏色代碼

| Comments

在開發 App 的過程中,時常需要插入顏色的代碼,通常就是請設計師給我們 RGB 值,然後我們再寫成 [UIColor colorWith...] 來產生顏色。這樣的方式沒什麼不好,只是對我來說會遇到兩個麻煩。

1.不知道那是什麼顏色

當然我們在寫程式的當下會知道我們要插入什麼顏色,可是過一陣子再回來看到那一行 [UIColor colorWith...],我相信沒有人可以在腦海中想出它對應到的顏色是什麼。

所以我會安裝 ColorSense-for-Xcode 這個 plugin,安裝之後只要將游標移動到程式碼,就會顯示對應的顏色,非常方便。

更方便的是,你還可以點擊那一塊顏色標籤,它就會跳出系統內建的 Color Picker,讓你馬上調整顏色,而且還會自動更新你的程式碼!

2.要轉換不同格式的色碼

每個設計師的習慣不同,不同的平台(Web、Android、iOS)習慣的色碼格式也不同,所以你有可能會拿到或看到 RGBA、HSBA、CMYK、Hex 等等不同格式。有的工程師會認命的自己轉換,有的會請設計師認命一點轉好再給他們,難道就沒有更方便的作法嗎?

我強力推薦使用 Skala Color,它支援輸入與轉換多種色碼格式,無論是 App 還是 Web 工程師都應該安裝,因為它實在是太方便了。

更棒的是,你絕對不會在需要它的時候忘記要開啟哪個 App,因為它就整合到系統內建的 Color Picker。也因為它跟系統整合,所以它可以跟 ColorSense-for-Xcode 搭配使用!

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

| Comments

TL;DR

前一陣子 AFNetworking 被爆出存在安全性漏洞,它們也針對這件事情發出聲明稿

簡單的說,就是建議開發者使用最新版的 AFNetworking,並且啟用安全連線。不過它們也承認這一部份的說明文件沒有寫得很齊全,所以困擾了不少開發者。

今天花了一點時間研究,順手把它記錄下來。安全相關的東西不是我的專長,所以如果有任何錯誤的地方,請留言告訴我。

必備的 Xcode plugins

| Comments

不得不說 Xcode 的功能跟其他 IDE 相比,真的挺陽春的,多虧網路上一堆熱心的開發者,幫忙開發了不少 plugins,稍稍補強了 Xcode 的功能。底下就列出我目前有用到的 plugins,當作一個備忘,也歡迎大家跟我分享好用的 plugins。

因為 plugins 是會綁定 Xcode 版號的(其實是綁 UUID),所以只要有新版 Xcode 出現,原有的 plugins 就會無法載入,建議安裝 DVTPlugInCompatibilityUUIDifier 來解決這個問題。另外我也強烈推薦使用 Alcatraz 管理這些 plugins!

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

| Comments

之前寫過一篇文章,分享如何 讓 Xcode 專案易於版本控制的方法,最近又看到另外一個小技巧,跟我原本的方法結合起來的話,基本上就萬無一失了!

這個方法的步驟如下:

  1. 建立一個 .gitattributes
  2. 輸入 *.pbxproj merge=union
  3. commit 這個 .gitattributes

這些動作告訴 Git 「針對 .pbxproj 檔要使用 union 的 merge 策略」,翻成白話就是「要包含對方的修改跟自己的修改」。

在之前的文章裡頭,我們已經將檔案照檔名排序了,所以當遇到合併衝突的時候,可以安心的包含對方的修改跟自己的修改。

參考來源

如何在 Debug mode 自動停用 ATS

| Comments

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

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

解決 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

讓 Xcode 8 再度支援 plugins

| Comments

眾所皆知的,Xcode 8 把之前的 plugins 都擋掉了,然後推出了 Source Editor Extension,但 Source Editor Extension 的能力還很有限,基本上只能對「文字」操作。

所以就有人提出了一個解法,把 Xcode 8 app unsign,這樣就能讓 plugins 再度作用了。具體作法如下:

  1. 下載 MakeXcodePluginsWork
  2. chmod 755 makeXcodePluginsWork 然後執行它
  3. 啟動 Xcode,原有的 plugins 都回來了

這樣會把 Xcode.app 的 signing 關掉,會變得比較不安全(其實就算跟之前一樣而已),所以請自己小心,後果自負。附帶一提,Xcode 8 開始內建一些功能,有些 plugins 可以退休了,例如:

  • 可以高亮度當前列,從【Preferences -> Fonts & Colors】設定「Current Line」顏色
  • 可以產生註解文件,熱鍵是【Command + Option + /】