學(xué)習(xí)IOS有一定的時(shí)間了。
學(xué)習(xí)內(nèi)容
主要的學(xué)習(xí)材料有以下幾個(gè):
1.Stanford大學(xué)Paul Hegarty白胡子大叔講授的 Developing IOS 7 APPS for iPhone and iPad,最近又出了IOS8課程,兩者講述的內(nèi)容相似。最大的不同就是前者系統(tǒng)為IOS7,使用Objective-C,后者則講述最新IOS8,使用swift語言。
上課的白胡子大叔很用心,講解也很細(xì)致,讓你知其然而知其所有然
每次視頻中,前半段針對某一內(nèi)容講理論,后半部分就會(huì)做個(gè)小demo,使用剛講的理論知識。
2.Apple官方文檔。前期看的文檔,參考了tinyfool這篇文章<蘋果Xcode幫助文檔閱讀指南>[http://ourcoders.com/thread/show/117/] 下推薦的內(nèi)容。
3.Ray Wenderlich出品的<IOS Apprentice THIRD EDTION>,主要跟著學(xué)習(xí)其中1、2、4這三個(gè)demo,現(xiàn)在主要關(guān)注第四個(gè)demo,其實(shí)現(xiàn)了從web service中去json數(shù)據(jù)解析,并在tableview中顯示,以及scrollview的使用,講述內(nèi)容很細(xì)致,真的是手把手教你寫IOS App,就像書名那樣IOS學(xué)徒。
用一句話描述自己的水平的話,“只懂得最最基礎(chǔ)IOS開發(fā)知識,還需要通過完成一個(gè)實(shí)際應(yīng)用來提高”。
知識總結(jié)
1.IOS開發(fā)使用MVC模式。
- M為model,是應(yīng)用中的數(shù)據(jù)與控制程序邏輯的代碼,體現(xiàn)應(yīng)用是什么
- V為view,是用戶所能看到的界面以及一部分處理用戶交互部分的代碼(如響應(yīng)手勢時(shí)回調(diào)函數(shù),若手勢的結(jié)果為改變model中的數(shù)據(jù),放在controller中比較合適,因?yàn)镸VC模式一個(gè)原則包括View不能直接與model通信)
- C為controller,將model里數(shù)據(jù)傳遞給view現(xiàn)實(shí),以及處理view中不能處理交互(比如為了view通用,controller作為tableview的datasource及delegate,以及將controller作為button的target)。
注:
- C中可以有指向model的strong reference、view的weak reference引用
- C中保持v的弱應(yīng)用,用來顯式改變該view的屬性(如文字、背景顏色、字體等);view應(yīng)該顯式制定自己的datasource或delegate(在storyboard托出TableViewController時(shí),xcode幫你指定了datasource與delegate,其他情況下可以在viewDidLoad中設(shè)定)
關(guān)于C中保持view弱應(yīng)用剛開始挺迷惑的,為什么保持個(gè)weak reference,而不是strong呢?后來參照下圖
c中有兩個(gè)outlet view且都是weak reference,但是可以注意的是每個(gè)controller都有一個(gè)strong的view引用,這個(gè)是此controller view hierarchy最高層次,是此controller任何其他view的superview,只要controller不被銷毀,就能通過view找到weak的引用,而最高層次對其他strong view reference是UIKit幫忙我們完成,可以不用擔(dān)心。
- C中有model的strong reference。關(guān)于這一點(diǎn)主要是兩個(gè)方面:①不要在C中對model中數(shù)據(jù)處理,面向?qū)ο蟮暮苤匾稽c(diǎn)就是,每個(gè)對象負(fù)責(zé)自己的工作,如不要將model數(shù)據(jù)保存的代碼放在C的代碼中②model當(dāng)自己數(shù)據(jù)改變時(shí),原則上都應(yīng)該通知C,C好更新View,以讓界面顯示與數(shù)據(jù)模型間的同步,這里有兩種方法:KVO與Notification。這兩者都算iOS開發(fā)中消息傳遞常用的方式,在后面總結(jié)時(shí)會(huì)進(jìn)行詳細(xì)闡述。