做爲一個android客戶端開發,若是你不懂點ios開發,怎麼好意思說本身是客戶端開發呢,本文講解如何讓android開發碼農在一個星期上手IOS開發 --《記錄本身IOS開發經歷》。java
1、開發工具對比android
AndroidStudio做爲android開發的御用編輯器,相信小夥伴不用我解釋太多,其中有太多好用到哭的功能不想過多解釋,相比之下,XCODE做爲IOS開發的御用編輯器,大部分功能就比android studio要落後不少,我接觸過一段時間,有如下幾點感悟:ios
一、Version 8.2.1以後,直接致使以前的不少插件都無法使用了。git
二、swift代碼重構等功能遲遲沒有提供,相信這對於全部小夥伴來講,至少是1萬點傷害。github
三、查找功能差Android一條街,double shift查找各類,而XCODE須要點擊到左下角,在選類型,在查找。編程
四、調試功能相對於AndroidStudio來講,有點相似於我國和美帝的差距swift
五、自動補全,代碼着色,註釋功能常常間歇性抽風,不知何故,嚴重須要重啓MAC才恢復,(注意,不是重啓XCODE),好比下面註釋不能使用的場景設計模式
六、等等,不想說太多。。xcode
可是,你必須得接受一個事實XCODE畢竟是IOS開發的御用IDE,不用也不行啊,那麼,有沒有什麼辦法,使咱們在開發ios app的時候,稍微爽點,答案,固然是有的,好比,我是這麼解決的。app
更加不忍直視的是,直接能夠看部分代碼片斷,恐怕xcode是不會出這麼人性化的功能了。
呵呵,聰明的你已經明白了,同時開一個APPCode 來做爲輔助,是一種不錯的選擇,並且這對於曾經是android開發的你來講,絕對是一種加強型體驗,快捷鍵就使用你以前的便可,查找,rename,等等功能爽的不要不要的。
2、乾貨來了,如何入手
反正以上槽也吐了,那麼,接下來總要說點好的吧。
一、感謝蘋果推出swift這種語言,使得android碼農能夠很是迅速的搞起IOS開發,現在SWIFT已經3.1了,若是,大家打算重新擼一款APP,若是仍是說,用OC,我建議你治療一下,swift已經很成熟了,不存在升級一個版本,面臨大量代碼改寫的悲劇了,並且,git上swift的開源庫,也是慢慢的夠用了,退一萬步講,即使沒有,引入OC的庫,也是可以用的。那麼,若是你打算搞起swift,我確定是要推薦一些庫給你的:如下內容純屬乾貨:
二、以上說了語言上的選擇,swift沒錯,那麼,接下來你確定是要熟悉swift語法的,我建議你看看
這邊書,若是你不太喜歡閱讀英文,沒有關係,社區已經有人翻譯了中文版本的,地址在這裏;英文本來直接在官網下載便可。
我想,你必定會說,究竟怎麼一個星期就能夠搞起?
a、swift語法的熟悉,你可能要注意一下let,optional,guard,switch,tuple之類的,其餘的,能夠在一遍擼一遍學了,反正用幾回就熟悉了,可能語法我只能給你2天時間,不能再多了,ps(學習語法的時候,最好是拿你比較熟悉的語言去對比,我的以爲這種方式是最快的)
b、其實IOS開發的重點並不在語法,而在於蘋果爲IOS開發者提供的一些UI層面的庫的熟悉,這個我只能給你4天時間,不能再多了,這部分的學習相對來講是比較痛苦的,不過,方法依然是對比學習,對照着android 的四大組件,相信你很快就能夠從UIKIT中找到他們的影子,舉一個最基本的例子。
相信你看到這幅圖以後,腦海裏面必定是出現了:
沒錯,就是這樣來的,其餘的uitextview ,uitableview,uilabel,uiimageview不能說再多了,都是這個套路。
c、推薦工具機器書籍:
dash是必定須要裝的,這個查找資料實在不能方便太多,至於書籍,我的以爲沒有必要推薦,若是實在要推薦,那確定是蘋果的開發者幫助文檔了,直接下載在dash裏面看就行了。
至於工具,stackover ,和 google 纔是你最須要的,我在爬坑的過程當中,遇到的99%的問題都是在stackover上找到了解決方案,還有1%的是至今也沒有解決的,問同事,同事也是無解。。
d、swift的亮點有哪些?面向協議vs面向對象
沒錯,swfit是面向協議的編程語言,加上逆天的協議擴展,各類語法糖只有你想不到,想到了都驚呼,竟然能夠這麼玩。
協議是能夠有默認實現的,請在擼的過程當中慢慢體會這個的好處,至少,能夠爲你省去很多的無用代碼《空實現》,固然,有人可能會說,這是你定的協議違背的單一職責原則吧,好吧。。
函數式,真的假的,還函數式?
是真的,千真萬確,swift是能夠玩函數式的。
這不,有人出了一本書,並且,喵神還幫忙翻譯不是。
3、俗話說,會列表懂詳情,你就是一個「合格」的客戶端開發
那麼,問題來了,IOS中,如何去作一個列表:實際上,接觸過以後,你會發現套路很簡單:
a、使用到的組件固然是UITableView,那麼,和RecyclerView對比,有什麼區別呢?
b、RecyclerView中的列表項的數據是有adapter的onCreateViewHolder和onBindViewHolder協力完成,onCreateViewHolder負責layout出cell的架子,onBindViewHolder負責給架子填充實際的數據,那麼IOS中是如何作的呢?
同理,
UITableView的這些個方法能夠給你建立cell的架子,而後數據的綁定就由DataSource的
這個方法提供。那麼問題來了,UITableViewDelegate是幹嗎的呢,相信你見過ios對於列表項的左滑出現刪除,乃至,長按拖動列表項的位置,其實都是由這個代理提供對應的接口去實現。
c、所以,細心的你會發現,兩個平臺的在列表上的實現基本上原理是一致的,不一樣的是採用的設計模式不一樣,android顯然是使用的適配器模式,一股腦的全部的動做都在adapter中作好就能夠了,二者也均有CELL重用機制,也都會遇到列表常見的性能問題,這些也須要在開發的過程當中細心的去體會。
d、詳情沒必要多說,只要你瞭解了UIViewController的生命週期,以及navigationController對於Controllers的管理棧,一切都是和android驚人的相似,可是彷佛IOS又簡單了很多,至少在生命週期函數上,IOS沒有什麼onstop,(onresume能夠找到對應的viewWillAppear)等等,fragment的概念彷佛在IOS中不存在,不過能夠類比爲一個UIVIEW吧(本人暫時這麼理解)。
4、其實,IOS開發也是有不少坑在等待着你,不過別急,你踩過的,99%均可以在stackover和google上找到
a、好比,IOS開發中,代理的使用是很是常見的,可是稍稍不注意,就會形成循環引用,什麼是循環引用,看圖
uiview做爲子view加入到ViewController中,出於某種緣由,uiview須要持有ViewController的引用,好比可能某些事件須要經過代理傳遞進去,所以,循環引用稍稍不注意就悄然發生了,那麼,怎麼解決
使用weak:
weak may only be applied to class-bound protocol types是個什麼鬼,在java中,就是這麼搞的啊,stackover一下咯,這裏發現了答案
b、連續pushViewController,先pushA,在A的viewDidLoad中立刻pushB,結果B沒有出現,個人想法是讓A做爲一個過渡的頁面,(由於常常有這種需求,主人態客人態的頁面結構差別很大,所以我習慣作兩個頁面。而後經過一個導航頁來跳轉)。
那麼緣由是什麼,此次,我沒有搜索到答案,多是我輸入的關鍵字不許,對於問題的描述不夠準確吧,可是我仍是解決了,我猜測多是由於,兩次,push的時間間隔不能過短,因而我這麼作了
使用timer作必定的延時,結果,果真就解決了。因此有時候猜一猜,別怕,大膽嘗試,也許問題也能解決。
c、總結一下,在有android開發基礎上作到ios開發入門是比較簡單的,可是,要作到ios開發上游刃有餘,仍是須要必定的時間的,那麼,如何加速這個過程,只有讓本身不斷的痛苦,好比,去github上學習開源的項目,在好比,直接熟悉大家現有的項目的ios版本。
【騰訊WeTest iOS預審工具】
爲了提升IEG蘋果審覈經過率,騰訊專門成立了蘋果審覈測試團隊,打造出iOS預審工具這款產品。通過1年半的內部運營,騰訊內部應用的iOS審覈經過率從平均35%提高到90%+。
現將騰訊內部產品的過審經驗,以線上工具的形式共享給各位。
在WeTest騰訊質量開放平臺上能夠在線使用。點擊http://wetest.qq.com/product/ios便可當即體驗!
若是使用當中有任何疑問,歡迎聯繫騰訊WeTest企業QQ:800024531
【一鍵掃描】只需提供ipa包、審覈圖片、審覈視頻、應用描述,便可在4小時內拿到一份完整的檢測報告,定位問題的同時提供解決方案,助您成功經過審覈。
【案例分享】集結iOS審覈失敗常見緣由,豐富案例爲您提供參考依據。
【專家服務】騰訊專家團隊爲您分析各類疑難雜症,提出最優解決方案。
【ASO優化】專業優化AppStore內關鍵字搜索結果,讓產品離用戶更近一步。但願App/手遊在預審驗收保證下,均可以快快樂樂過審,開開心心賺錢。,開開心心賺錢。