英文原文:Things I wish I had known before starting iOS development—Part 1 php
設計師設計出來了一個不錯的引導界面,然而當我看到設計稿的時候,咱們的app也沒幾天就要上線了。這個界面模仿了Evernote iOS app的風格。 ios
我以迅雷不及掩耳盜鈴之勢開始在Xcode上編程,用了page view controller和scroll view。在Stack Overflow和Google的幫助下,我用了2天把它完成了。當我把產品給一個一樣搞iOS開發的朋友看時,他跟我說,若是我用了這個開源項目的話,一個小時就能夠搞定一切。 git
過去這一年我經歷了很多相似的事情,這些事情讓我成長,讓我可以成爲一個更好的iOS開發工程師。我想跟你們分享一下個人經驗,但願大家能夠再也不犯我這些錯誤,一路平坦走向成功。 程序員
重視基礎 github
剛開始學iOS開發的時候,我直接去學習了斯坦福大學的這門課程,很是有用。然而,雖然我從課程中學到了不少,但它並無教給我多少iOS開發語言的基礎知識——當時的iOS開發語言主要是Objective-C。開始寫本身的app之後,我發現本身在基礎知識方面欠缺不少,這致使我總是弄出來一些bug。 web
若是你在面向對象編程的語言方面沒啥經驗的話,我建議你在投身進行iOS開發以前先讀一本這方面的經典書籍。我最喜歡的兩本是Big Nerd Ranch Guide for Objective-C和Swift的The Apple's Guide。 objective-c
沒錯,Ray Wenderlich上的教程和Team Treehouse上的視頻課程能教給你不少,但缺乏基礎知識的程序員就像無源之水、無本之木,老是長久不了的。 編程
良師益友Github swift
我對這個iOS開源社區絕對是真愛。Github上面有無數的優質項目,如AFNetworking, Restkit、JSQMessages,甚是碉堡。你必須學會在這個社區裏乘前人栽樹之涼。 後端
遇到問題時,先別一根筋急着苦思冥想或建立本身的庫,不如先去GitHub或Google找一下有沒有類似問題的解決方法。頗有可能某個開發者已經寫好了一個符合你需求的開源項目。
經過Facebook Groups或Slack chat來開始社區之旅吧!他們很樂意回答你的一切問題。你能夠瀏覽那些好的開源項目,看看大牛們是如何組織代碼的,本身也學着點。
這裏是GitHub上一些最優質的iOS資源。
vsouza/awesome-ios:awesome-ios——精選的優質iOS生態系統,包括Objective-C和Swift項目。
matteocrippa/awesome-swift:awesome-swift——收集了不少優質的swift資源。你也能夠來貢獻本身的力量!
cjwirth/awesome-ios-ui:awesome-ios-ui——優質iOS UI/UX庫精選。
若是你想找一些iOS的最佳實踐以供本身模仿學習,那請看下面這些。
futurice/ios-good-practices:ios-good-practices——爲iOS開發者提供靈感,做者是Futurice的開發者們。
瞭解你的工具
多數iOS開發者將Xcode做爲開發的首選工具。Xcode有不少強大的特性,如Storyboards、Auto Layout,若是學會用這些的話,相信你的開發效率確定能上一個臺階。出於某些限制,不少開發者會盡力避免使用Storyboards,但我我的認爲,Storyboards是快速佈局的有力工具。
學習使用Xcode中的快捷鍵。雖然看上去使用快捷鍵沒節省幾秒鐘,但「不積小流,無以成江海「,長此以往省下的時間就多了。以上這些都是我親測有效的手段,它們在提升開發效率方面給了我很大幫助。
使用Cocoapods來進行依賴管理。你的團隊會所以輕鬆不少。
在項目早期就學會使用持續整合(continuos integration),這樣就能夠避免將來可能出現的冗餘工做。
使用Testflight來分發測試版本。在被蘋果收購以後,Testflight變得更加簡單易用了,每一個人均可以經過它來使用iTunes帳號進行測試版本的分發。
在app中整合Crashlytics,這樣當app崩潰的時候你就能夠獲取Crash報告了。
若是你不想本身弄後端服務器的話,Parse爲咱們提供了很好的服務。
讀一些優質博客和資訊
前文已經介紹了一些很棒的iOS開源社區。不少優質的博客是由經驗豐富的iOS開發者撰寫的,每週都會有一些精彩的內容呈現。我最喜歡的一些包括:
Cocoa with Love:在本博客中,我將專一於使用和管理用戶界面中字符串的最佳實踐。這是一個至關...
多是最好的iOS博客。做者是Matt Galaghar。Matt作事情的方式是大師級的。
iOS Dev Weekly:訂閱本博客,輕鬆得到每週最棒的iOS開發網頁精選。由Dave Verwer精選併發布...
嚴格來講這不算個博客,但它每週都有超級超級棒的內容更新。做者是Dave Verwer。
NSHipster:Playgrounds並非Swift語言自己的特性,它們實際上是很棒的展現……
NSHipster對Objective-C和Cocoa進行拾遺的雜誌。它由Mattt Thompson每週更新。
Ray wenderlich:高質量的編程教程:iOS、Android、Mac,還有更多!
Ray Wenderlich的博客(對初學者超有用)
Custom Controls for iOS and OS X - Cocoa Controls:暫無描述
Peter Steinberger:蘋果在Xcode 6中增長了對NS_DESIGNATED_INITIALIZER 標誌的支持,同時也將其添加到了各類各樣的框架中……
Matt Gemmell:基於個人寫做項目進行簡要更新。它或許會引發一些人的興趣……
Natasha The Robot:僅僅是又一個WordPress站點
在這些博客中挑選乾貨,認真閱讀,相信你會變成一個更好的iOS開發者。
設計也能變輕鬆
不少開發者對於iOS的設計方面談虎色變。咱們老是對設計敬而遠之,一古腦兒都扔給設計師去作。但其實,只要稍稍努力,你也能夠學會設計本身的app。
如今,設計師和開發者之間的界限日益模糊,由於好多成功的iOS獨立開發者包攬了全部app設計、開發和營銷工做。我將在下一部分談到營銷方面的事。若是你想設計本身的iOS app的話,不妨學一下Sketch這個工具。Sketch專爲應用設計和網頁設計而生,簡單易上手。
Bohemian Coding - Sketch 3:Sketch是簡單易用的輕量級軟件,它強大、靈活而快速。最後……
你能夠在網上找到大量的Sketch資源和插件,它們能讓你有趣而簡單地工做。一旦完成了設計工做,你能夠馬上用這個神器將它們整合在一塊兒。
Free mobile & web prototyping for designers - Marvel:將草圖和設計轉化爲可交互的Web、iPhone、iPad、Android和Apple Watch原型和模板……
下一部分,我將談一談在開發本身的app時的必要方法,而且講一些iOS應用的營銷技巧。
CocoaChina原創翻譯,轉載請註明!