初學(xué)者必看文檔:iPhone開發(fā)之路學(xué)習(xí)基礎(chǔ)
iPhone開發(fā)之路學(xué)習(xí)基礎(chǔ)是本文要介紹的內(nèi)容,主要介紹了iphone中的代理類、iPhone的基本設(shè)計模式的內(nèi)容,一起來看詳細(xì)內(nèi)容介紹。
談?wù)劥眍?delegate class)
程序的代理對象是開發(fā)者自己實(shí)現(xiàn)的對象,主要負(fù)責(zé)監(jiān)聽程序的高級行為。代理機(jī)制用于避免繼承復(fù)合UIKit對象(例如UIApplication對象)。使用代理不需要子類繼承或重寫父類的方法,只要保持復(fù)合對象不變,將需要添加或重寫的代碼放到代理對象中。當(dāng)有事件發(fā)生,復(fù)合對象會發(fā)送消息給代理對象。 這有點(diǎn)像“鉤子”,通過這些“鉤子”來執(zhí)行代碼和實(shí)現(xiàn)需要的行為。
程序代理負(fù)責(zé)處理很多重要的系統(tǒng)消息沒一個iPhone程序都必須有。這個對象可以是任何實(shí)現(xiàn)了UIApplicationDelegate協(xié)議(protocol)的對象的實(shí)例,UIApplicationDelegate協(xié)議在程序生命周期內(nèi)定義了很多“鉤子”和實(shí)現(xiàn)自定義行為的方法。盡管不要求開發(fā)者實(shí)現(xiàn)所有這些方法,但是下面這些方式是必須實(shí)現(xiàn)的:
applicationDidFinishLaunching :開發(fā)者可以用在這個方法中完成自定義的初始化任務(wù),比如加載數(shù)據(jù)或用戶界面;也可以恢復(fù)程序上一次退出時的狀態(tài)。
applicationWillTerminate :開發(fā)者可以在這個方法中將重要的數(shù)據(jù)和程序狀態(tài)保存起來,也可以再這個方法中進(jìn)行清理工作比如刪除臨時文件。
iPhone的基本設(shè)計模式
UIKit框架的設(shè)計采用了很多和Cocoa程序類似的設(shè)計模式。理解這些設(shè)計模式對開發(fā)iPhone程序非常重要。因此在學(xué)習(xí)開發(fā)iPhone程序前,有必要了解一下iPhone開發(fā)中常用的設(shè)計模式。
iPhone應(yīng)用程序中的基本設(shè)計模式包括:
MVC模式(Model-View-Controller)
MVC模式是將你的代碼風(fēng)格成獨(dú)立的功能模塊的良好方法。模型(Model)部分定義了底層數(shù)據(jù)引擎并負(fù)責(zé)維護(hù)這些數(shù)據(jù)的整合;視圖(View)部分定義了用戶界面,它并不知道顯示在界面上的原始數(shù)據(jù)的具體含義;控制器(Controller)部分像是模型和視圖之間的一坐橋梁,負(fù)責(zé)更新它們。
代理(Delegation)
代理模式是一種可以不必通過繼承卻可以改變復(fù)合類行為的途徑。你可以將你的用于改變復(fù)合類行為代碼放到單獨(dú)的代理對象中有復(fù)合類來調(diào)用,而不必去繼承。復(fù)合類會調(diào)用代理對象中的方法從而給它一次運(yùn)行自己代碼的機(jī)會來更改復(fù)合類的行為。
目標(biāo)-行動(Target-Action)
控件(Controls)采用目標(biāo)-行動模式來提醒程序用戶的交互。當(dāng)用戶按照預(yù)定義的方式與某個控件交互時(例如按了某個按鈕),控件會發(fā)送一個消息(動作)給指定的對象(目標(biāo))。當(dāng)收到消息時,目標(biāo)對象根據(jù)消息采用相應(yīng)的方式進(jìn)行響應(yīng)(例如更新程序狀態(tài)來響應(yīng)按鈕點(diǎn)擊)。
管理內(nèi)存模型(Managed Memory Model)
Objective-C采用"引用計數(shù)"的方式來決定合適清理對象所占的內(nèi)存。當(dāng)對象初次創(chuàng)建時,它的引用計數(shù)為1。其他對象可以調(diào)用改對象的retain, release 或 autorelease方法增加或減少此組件的引用計數(shù)。當(dāng)對象的引用計數(shù)為0時,Objective-C運(yùn)行環(huán)境會清理掉該對象所占的內(nèi)存。
小結(jié):iPhone開發(fā)之路學(xué)習(xí)基礎(chǔ)(初學(xué)者必看文檔)的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對你有所幫助!