2009-04-09 50 views

回答

8

雖然您可以實現符合UIApplicationDelegate協議的多個類只有一個,第一個會接收這些消息。

實現一個協議來創建委託只是方程的一部分。然後該代表必須註冊生成消息的代碼,這些系統通常只支持一個代理。

在UIApplication的情況下,您可以使用UIApplication共享類中的'delegate'屬性更改委託,但這會替換原始委託,而不會添加額外的委託。

如果您需要向其他系統廣播UIApplication級別的消息,那麼這是您應該添加到您的現有代理的功能。

5

您可以實現多個採用UIApplicationDelegate協議的類,但在任何給定時間只能有一個實際的委託。它由[UIApplication sharedApplication].delegate設置,通常由主NIB文件通過插座連接設置。

4

只要符合協議不會將您的對象設置爲委託,您需要明確地在筆尖或代碼中執行此操作。如前所述,一次只有一個對象可以成爲代表。擁有多個委託可能在某些情況下有意義 - 例如,如果您有一個顯示兩組數據的表視圖,則可以爲它創建兩個委託和數據源對象,並根據需要在它們之間切換。儘管這對於應用程序的委託來說可能沒有意義,因爲代碼非常具體。

請記住,除了調用委託方法外,有時對象還會發送通知。很多時候,它們看起來像是同一件事,因爲如果對象包含特定的方法簽名,該對象將自動爲您的委託添加通知。但關鍵的區別在於除委託之外的其他對象也可以訂閱這些通知,因此您可以一次將它們連接到多個對象。

1

丹尼爾·迪克森說:

您可以實現採用了UIApplicationDelegate協議的多個類,但只有一個可以在任何給定的時間實際委託。它由[UIApplication sharedApplication] .delegate設置,它通常由主NIB文件通過插座連接建立。

...但知道你可以在運行時將它們交換出去,如果你需要的話。我最近考慮使用這種技術作爲合併由不同方開發的不能共享源代碼或重構的兩個應用程序的方式;但需要在設備上的單個圖標下共同定位。

相關問題