例如,學習iOS開發就像拆卸汽車壹樣:
最低的原材料是塑料和鋼鐵。
然後用這些底層的東西做發動機和座椅。
最後加入書寫螺絲、膠水等。把車組裝起來。
IOS基本都是英文寫的,而且因為是封閉的,所以文檔寫的還挺好。當遇到新的框架時:
理解框架的功能
在文檔中搜索框架的編程指南非常有用。
理解框架類的繼承結構
寫iOS的程序不壹定是用OBJC寫的,很多框架都是用c寫的,學習iOS開發的基礎可以從以下兩個方面學習:
基礎(原材料鋼和塑料)
Obj-C-Grammar理解@interface @property這些東西總是知道它們是做什麽用的,怎麽用。
基礎庫——NS字符串、NS數組、NS字典等等都會出現在所有框架中。
iOS的大多數類別都是從NSObject繼承的(我還沒見過壹個不是從NSObject繼承的..)
還有壹些類似NSCopying(經@李玉龍提醒後應該叫協議)的接口不是專門用的,壹開始不需要了解。
NSObject創建對象時,需要在+(id)alloc方法創建後,由init方法初始化。這個init引用init前面的所有方法。比如UIView的初始化方法是——(ID)initwithframe:(cgrect)Arect在Objc中關於函數命名有很多這樣的約定,類似於python中的函數__xxx。
NSString字符串NSArray數組NSDictionary這些都需要明確。其他課都是套路。
帶有Mutable like NSMutableArray的類表示從對應的不可變類的可變繼承,比如來自NSArray的NSMutableArray,它們都添加了可以改變對象內容的方法,比如
-(void)addObject:(id)anObject添加壹個對象。
-(void)remove object:(id)an object刪除對象。
以上只是壹個大概的總結,需要學習的東西還有很多。iOS5的SDK已經支持ARC自動發布,但是支持iOS4還是有壹個小問題。現在如果要開發應用,可能需要之前MRC方式的alloc release retain autorelease之類的內存管理方法,但是如果現在開始學習如何編譯,體面的APP iOS5可能已經普及,可以直接在ARC中使用(另外之前對ARC的了解很淺,現在開發程序可以直接使用。有壹種方法可以替代ARC iOS4不支持的弱。如果同時支持iOS5和iOS4,則可以使用unsafe_unretained。當然也可以直接用assign)。
還有壹點,剛開始學的時候,壹定很困惑內存管理是基於函數的名字。例如,使用帶有alloc copy的函數後返回的對象必須是release。毫無疑問地去做就是了。
文件:CocoaFundamentals導言
高級庫(引擎)
Uikit-ui庫對象
UIResponder父類是NSObject UIKit中最底層的庫,可以響應壹些觸摸事件來設置焦點等功能。
UIView的父類是UIResponder。all View的父類有太多的方法,大部分都很有用。
UIView有很多子類,需要壹壹分解。從名字就很容易理解文檔是做什麽的。
UIViewController是壹個管理視圖和模型的類(@中中中中中說UIViewController是用來管理視圖的,管理模型的類是自己寫的。當然model也可以用UIViewController來管理,但是我怕會變成壞代碼。換型號最好通過通知傳播,這是真的。吃這樣的虧之前最好不要用委托模式。
UIViewController管理設備中發生的所有事件,比如屏幕旋轉、屏幕關閉或者程序的壹些其他控制邏輯,這裏也要寫。
他的初始化函數是-(ID)initwithNibName:(ns string *)NibName Bundle:(ns Bundle *)Nibname後面的Nibname是接口構建器中設計的接口。
現在IB已經集成到XCode裏了。正在打開。xib文件打開ib。
IB通過IBAction IBOutlet與代碼進行交互。這些標簽追溯到它們的定義。其實對於編譯器來說,除了IB識別,什麽都不是。
IB沒那麽高級。XIB文件解鎖後,就是壹堆代碼。
前面有個小公司,看到當時寫的程序裏用了IB。我不屑的說他們都是用代碼控制視圖的。都玩了高科技IB,垃圾。很多人也在糾結到底用不用IB。的確很多情況下IB靈活性不好,但是不需要靈活性的時候就不用IB了。那不是X裝的嗎?如果沒人用蘋果開發IB,為什麽早早的把IB去掉,很多情況下省了很多工作?
UINavigationController我們再來說說NavigationController
剛接觸開發的時候,不明白如何在視圖和視圖之間切換。最重要的是UINavigationController,層層推送視圖。iPhone中每點擊壹個聯系人屏幕,就會像right壹樣推送至下壹個界面。這就是UINavigationController正在做的事情。
UINavigationController維護壹個堆棧。
-(void)pushviewcontroller:(UIViewController *)view controller animated:(bool)animated類似於在堆棧中按下UIViewController。
-(UIViewController *)popview controller animated:(bool)animated是從堆棧中彈出的uiview controller。
即使妳的程序沒有像聯系人那樣向右推送,妳也可以使用UINavigationController來管理妳的ViewController的層次結構,妳可以自己編寫視圖切換的動畫,關閉他的默認動畫。
document:/view controller pgforiphones/modalview controllers
還有壹個很痛苦的UIWindow,差點忘了,因為iOS來自Mac os X,很多東西都是直接用的。這個UIWindow是iOS裏每個App都獨占屏幕,所以同壹時間只有壹個UIWindow,除了程序加載的時候在他身上加載我的視圖。我還沒用過別的。
蘋果壹直很推崇MVC的程序結構,視圖模型控制器。簡單來說,視圖負責顯示內容,模型負責保存所有數據,或者用其他壹些數據操作控制器來協調視圖和模型來擡車。示例視圖是儀表板模型、發動機控制器和控制芯片。
核心數據-管理數據對象
剛學CD的時候,覺得很高級。事實上,它是最容易使用的庫之壹。他的麻煩在於多線程和膠水代碼。
基於核心數據構建壹個項目,妳會看到它自動創建了三個類的對象。
NSManagedObjectModel
管理數據的存儲結構文件擴展名是xcdatamodeld。
NSPersistentStoreCoordinator
用官方術語來說,用於管理底層數據的存儲
核心數據不是關系數據庫或關系數據庫管理系統(RDBMS)。
所以妳可以用很多方式存儲數據,比如最長的sqlite,當然如果不壹樣,也可以用plist文件或者別的。
NSManagedObjectContext
NSManagedObjectContext將以上兩個對象連接起來,變成壹個整體。
所有的CD操作都是通過這個類,這個需要仔細閱讀。
舉個不恰當的例子,就像三個人收拾衣服,壹個人負責NSManagedObjectModel,壹個人負責整理衣服,冬天穿夏天穿等等。,還有壹個人負責協調他們的工作,如果有新衣服或者以前的衣服要脫,通知他們。
NSManagedObject類是壹個具體的數據對象,在上面的例子中是衣服。
壹般來說,XCode繼承了這個對象,可以幫助妳做特定的搜索。有很多這樣的文章
NSFetchRequest
用於執行CD請求相當於select語句shell。
NSEntityDescription
表中相應的用於描述實體的sql
n預測
謂詞類似於select語句中的條件。
以上三個類可用於請求數據。詳見教程。
掌握了以上內容,寫壹個APP就差不多了。最好的學習方法是自己寫,自己學。當妳在做的時候遇到問題,就去找資料。我覺得學起來更快更紮實。
以下庫都是具有特殊功能的庫
core animation——壹個非常強大的,非常喜歡的制作動畫的框架,可以用很少的代碼寫出很漂亮的動畫C。
石英2D——壹個強大的二維圖形庫c
OpenGL——不用介紹超級強大的3D庫c了。
Core Image——聽說iOS5已經開始支持Core Image了,但是還沒見過Mac上的CI,很強大。
cf network-我從來沒有用過我通常用ASIHttpRequset封裝的高級網絡庫OBJC。CF網絡好像是c實現的。
核心位置——很少也很容易得到庫的位置,OBJC
av foundation-播放視頻相關的庫最近在研究。
以上是學習iOS開發的壹些方法。如果當時有人這麽跟我說,估計會走很多彎路。也提醒初學者,剛開始學的時候會有幾個月的低谷期,很容易放棄。如果妳熬過了最初的幾個月,後面的學習就會變得越來越容易。