資源描述:
《探索ios開發(fā)中的消息傳遞機制》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學術(shù)論文-天天文庫。
1、探索iOS開發(fā)中的消息傳遞機制每個應用程序或多或少,都由?些松耦合的對彖構(gòu)成,這些對彖彼此z間要想很好的完成任務,就需要進行消息傳遞。本文將介紹所有町用的消息傳遞機制,并通過示例來介紹這些機制在蘋果的Framework中如何使用,同吋,還介紹了一些最佳實踐建議,告訴你什么時機該選擇使用什么機制。雖然這一期的主題是關(guān)于FoundationFramework的,不過本文中還介紹了一些超出FoundationFramework(KVO和Notification)范圍的一些消息傳遞機制,另外還介紹了delegation,blockfltarget-action。大多數(shù)情況下,消息傳
2、遞該使川什么機制,是很明確的了,當然了,在某些情況下該使用什么機制并沒有明確的答案,需要你親自去嘗試一下。本文中,會經(jīng)常提及接收者[recipient]和發(fā)送者[sender]o在消息傳遞機制中具體是什么意思,我們可以通過一個示例來解釋:一個tableview是發(fā)送者,而它的delegate就是接收者。CoreDatamanagedobjectcontext是notification的發(fā)送者,而獲取這些notification的主體則是接收者。一個滑塊(siider)是action消息的發(fā)送者,而在代碼里血対應著實現(xiàn)這個action的responder就是接收者。対象中的某
3、個屬性支持KVO,那么誰修改這個值,誰就是發(fā)送者,對應的觀察者(observer)則是接收者??捎玫臋C制首先我們來看看每種機制的具體特點。在下一節(jié)屮,我會結(jié)合一個流程圖來介紹如何在具體情況下,選擇正確的消息傳遞機制。最示,將介紹一些來蘋果Framework中的示例,并會解釋在某種確定情況下為什么要選擇固定的機制。探索iOS開發(fā)中的消息傳遞機制每個應用程序或多或少,都由?些松耦合的對彖構(gòu)成,這些對彖彼此z間要想很好的完成任務,就需要進行消息傳遞。本文將介紹所有町用的消息傳遞機制,并通過示例來介紹這些機制在蘋果的Framework中如何使用,同吋,還介紹了一些最佳實踐建議,告訴
4、你什么時機該選擇使用什么機制。雖然這一期的主題是關(guān)于FoundationFramework的,不過本文中還介紹了一些超出FoundationFramework(KVO和Notification)范圍的一些消息傳遞機制,另外還介紹了delegation,blockfltarget-action。大多數(shù)情況下,消息傳遞該使川什么機制,是很明確的了,當然了,在某些情況下該使用什么機制并沒有明確的答案,需要你親自去嘗試一下。本文中,會經(jīng)常提及接收者[recipient]和發(fā)送者[sender]o在消息傳遞機制中具體是什么意思,我們可以通過一個示例來解釋:一個tableview是發(fā)送
5、者,而它的delegate就是接收者。CoreDatamanagedobjectcontext是notification的發(fā)送者,而獲取這些notification的主體則是接收者。一個滑塊(siider)是action消息的發(fā)送者,而在代碼里血対應著實現(xiàn)這個action的responder就是接收者。対象中的某個屬性支持KVO,那么誰修改這個值,誰就是發(fā)送者,對應的觀察者(observer)則是接收者。可用的機制首先我們來看看每種機制的具體特點。在下一節(jié)屮,我會結(jié)合一個流程圖來介紹如何在具體情況下,選擇正確的消息傳遞機制。最示,將介紹一些來蘋果Framework中的示例,
6、并會解釋在某種確定情況下為什么要選擇固定的機制。KVOKVO提供了這樣一種機制:當對彖中的某個屬性值發(fā)生了改變,對以對這些值的觀察者做岀通知。KVO的實現(xiàn)包含在Foundation里而,基于Foundation構(gòu)建的許多Framework對KVO部有所依賴。要想了解更多關(guān)于如何使用KVO,可以閱讀木期由Daniel寫的的KVO和KVC文章。如果對某個對象屮值的改變情況感興趣,那么可以使用KVO消息傳遞機制。這里有兩個要求,首先,接收若(會接收到值發(fā)生改變的消息)必須知道發(fā)送者(值將發(fā)生改變的那個對彖)。另外,接收者同樣還需耍知道發(fā)送者的生命周期,因為在銷毀發(fā)送者對彖Z前,帝
7、耍取消觀察者的注冊。如果這兩個要求都滿足了,消息傳遞過程屮可以是1對多(多個觀察者可以注冊某個對彖中的值)。如果計劃在CoreData對象上使用KVO,需要知道這跟一般的KVO使用方法有點不同。那就是必須結(jié)合CoreData的故障機制(faultingmechanism),一旦coredata出現(xiàn)了故障,它將會觸發(fā)其屬性對應的觀察者(即使這些屬性值沒有發(fā)生改變)oNotification在不相關(guān)的兩部分代碼屮要想進行消息傳遞,通知(notifacation)是非常好的一種機制,它可以對消息進行廣播。特別是想要傳遞豐