這一版比較完善的的App終於提交審覈了。有時間寫寫本身的一些經驗的總結了。本身主導的從0到比較成型的app到目前來講也只有兩個,可是其中的不少東西都是大同小異。基本上是想到了什麼就寫什麼,感受寫的不到位的地方,歡迎留言給我。html
1.首先是controller的解藕方面的東西:git
OC的時代,蘋果對於controller的解藕作的不是神完善,對於這塊的內容,能夠看看我去年寫的一篇文章,快速直達。那篇文章介紹的還不是很完善,裏面的實例代碼也不是很完善。好比說沒有個baseviewcontroller之類的東西,實際的時候要弄個這個,present的時候沒有默認的新建nav。總之參考一下就行了。github
2.數據方面,主要使用了AFNetWorking做爲基礎的網絡框架,輔以基於此封裝的 YTKNetwork
不少網路須要自定義的東西YTKNetwork作的都比較到位,比較建議你們比較深刻的研究一下這個基於AF二次封裝的YTK。而後在此基礎上加入本身的一些自定義的(其實就是修改源代碼啦),使用起來仍是很方便的,打印curl去和後端爭論,真的很爽呢。可是我的仍是比較習慣的爲每一個接口的網絡請求建立一個專門的子類,這樣可配置的東西就多了,對於比較大型的程序的靈活性和可擴展性仍是很是有幫助的。面試
3.MVVM和MVC的更深刻的使用,見到有人面試的時候對此說的頭頭是道,真正使用的時候卻發現沒有體會到其中的精髓。後端
舉例來講,由於我的喜歡把幾乎全部的controller的基view弄成scrollview或者其子類的tableview,主要是有bounce效果,尤爲是tableview,雖然一開始建立的時候會比較麻煩,寫的代碼可能不如直接往一個view或者scrollview上面堆控件來的更直接一些,可是等到產品的需求各類變動的時候就知道了。另外,使用tableview還能夠把不少的業務邏輯分拆到cell裏面,只要把數據拋給相應的cell,怎麼展現怎麼交互就都拋給cell去作了,有什麼結果能夠再回調回來。若是controller的數據變了,只須要從新config相應的cell,reload一下那一條cell就解決了,程序執行效率高還不容易出錯,出了錯也比較好調試。網絡
使用xib佈局基本的樣式,這樣也能大大的減小controller的代碼,只有邏輯變動的時候多是須要在controller裏面寫一些代碼,controller的代碼儘可能的保持簡潔,真的很是棒,邏輯更清晰了,不再想看特別長的不少不應寫在controller卻又寫在裏面的的代碼了。app
4.合理的使用單例。框架
單例這個東西是比較好用的,可是由於其威力比較大,影響會比較普遍,因此必定要慎重的使用。用戶基本信息,登陸否等的基本信息能夠存在單例裏面,可是能夠是單例持有的一個userinfo的對象,保持擴展,說不定那天你的程序就能夠多用戶登陸了呢。curl
5.用到的第三方的東西,儘可能的本身作一下封裝。工具
HUD啊,高德地圖啊,等的東西,使用的時候最好封裝一下,不但本身使用的時候會方便不少,後期效果的修改能夠在不改動第三方庫的狀況下進行比較高級別的base修改。尤爲是使用了cocoapods安裝類庫的時候,不改庫,能更方便的更新版本。
6.bug的反饋機制。
版本上線後可能還會發現不少的bug,有可能崩潰,卡頓,等等各類問題。這個時候專門的bug反饋就顯得比較重要了。這推薦幾個SDK,方便使用。
BugTags https://www.bugtags.com/
BugHD https://bughd.com/
再加上轉門的符號表分析工具,能夠直接解析蘋果給的日誌,https://github.com/answer-huang/dSYMTools
能追蹤到很大部分的日誌了。
7.熱修復。
版本上線後,有的時候會產生不少的小問題,這些小的問題,多是致命的,可是提交一次版本審覈就比較麻煩了。
原理都是運用了iOS的動態庫,主要有兩個大公司在引導這方面的技術吧
阿里巴巴:https://github.com/alibaba/wax
騰訊主要使用:https://github.com/bang590/JSPatch JSPatch還有專門的語法轉換工具https://github.com/bang590/JSPatchConvertor
反正我這邊使用的JSPatch技術,還有專門SDK,使用起來仍是很方便的。
就先寫到這吧,下班了,想起來其它的再更新補充吧