英文原文:Things I wish I had known before starting iOS development—Part 1
設計師設計出來了一個不錯的引導界面,然而當我看到設計稿的時候,我們的app也沒幾天就要上線了。這個界面模仿了Evernote iOS app的風格。
我以迅雷不及掩耳盜鈴之勢開始在Xcode上編程,用了page view controller和scroll view。在Stack Overflow和Google的幫助下,我用了2天把它完成了。當我把產品給一個同樣搞iOS開發的朋友看時,他跟我說,如果我用了這個開源項目的話,一個小時就可以搞定一切。
過去這一年我經歷了不少類似的事情,這些事情讓我成長,讓我能夠成為一個更好的iOS開發工程師。我想跟大家分享一下我的經驗,希望你們可以不再犯我這些錯誤,一路平坦走向成功。
重視基礎
剛開始學iOS開發的時候,我直接去學習了斯坦福大學的這門課程,非常有用。然而,雖然我從課程中學到了很多,但它並沒有教給我多少iOS開發語言的基礎知識——當時的iOS開發語言主要是Objective-C。開始寫自己的app以後,我發現自己在基礎知識方面欠缺很多,這導致我老是弄出來一些bug。
如果你在面向對象編程的語言方面沒啥經驗的話,我建議你在投身進行iOS開發之前先讀一本這方面的經典書籍。我最喜歡的兩本是Big Nerd Ranch Guide for Objective-C和Swift的The Apple's Guide。
沒錯,Ray Wenderlich上的教程和Team Treehouse上的視頻課程能教給你很多,但缺少基礎知識的程序員就像無源之水、無本之木,總是長久不了的。
良師益友Github
我對這個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原創翻譯,轉載請注明!