2012-06-06 32 views
3

您有一個班級必須向其父母發送消息。此類不被您的應用程序的任何其他成員使用。您將消息作爲NSNotification發送,或者您在該類上創建委託協議並在父級中實現委託方法,以便您可以發送消息?iPhone - 代表或通知?

什麼是最好的方法,爲什麼?一種方法比另一種有什麼優勢?

感謝

回答

4

儘管兩種方法都可以用來滿足所描述的消息傳遞要求,但在這種情況下委託協議是更合適的選擇。

通知作爲模式的好處是許多對象可能會響應已發佈的通知。希望觀察通知的對象只需註冊即可接收它們。這樣做的好處是你的代碼非常鬆散地耦合(通常在oop中是一個理想的值)。在這種情況下,鬆散耦合的缺點是,您可能會在不同的類中發生相關的行爲,並且基本上遍及您的代碼庫。

委託模式更加緊密耦合,並且您的委託對象必須符合它將接收消息的對象的協議。因此,觀察通知對象和通知對象之間的交互(或預期的交互)的本質相對容易 - 通過查看代碼,兩個「相關」對象之間的對象消息傳遞簡單易懂。如果你有一個孩子基本上宣佈了一些行爲(這可能與父母的行爲有直接關係),我認爲代表團是一種更好的方法。

5

通知是當你有多個觀察員或有興趣的通知的對象是有用的。 They're also useful for Key Value Observing

委託對於從一個對象向另一個指定爲委託對象的對象發送消息(符合您聲明的協議)非常有用。

+0

謝謝。這就是我懷疑的... – SpaceDog