2012-03-27 44 views
2

是否可以符合UIApplicationDelegate併成功地具有在ANY類中調用的啓動/關閉時調用的所有函數?例如,如果我有一個類在應用程序關閉時保存大量數據是一個好主意,但我不想在App Delegate中創建對它的引用,那麼只需要擁有一個類就可以了它符合UIApplicationDelegate協議,然後執行它的保存在(void)applicationWillResignActive:(UIApplication *)application其他類中的UIApplicationDelegate函數

更簡潔:多個類別符合UIApplicationDelegate是否有危險?

回答

4

任何時候只能爲任何對象指定一個代表。這聽起來像你真正想在這裏做的是註冊通知。

或者,如果沒有關於您想要的事情的通知,請將您的應用程序委託設置爲將自定義通知發佈到您希望在某些應用程序委託事件被解僱時工作的所有各類中的任何偵聽器。

爲了回答您的簡潔問題,在多個類別符合UIApplicationDelegate的情況下不應該存在「危險」,但同樣,在任何時候您都只能有一個代表回答UIApplication

+0

但看的文檔中,他們永遠不要警告多個類符合'UIApplicationDelegate'。 – CodaFi 2012-03-27 00:41:19

+2

@CodaFi,你可以有其他的類符合UIApplicationDelegate,但你將如何分配多個代表到你的UIApplication對象? – sosborn 2012-03-27 00:51:18

+0

'[UIApplication sharedApplication] .delegate'看起來很有希望。 – CodaFi 2012-03-27 01:04:32

3

沒有必要將代表設置爲您的班級,也不可能有兩個代表。
您可以做的是註冊通知。

UIApplicationDidBecomeActiveNotification 
UIApplicationDidChangeStatusBarFrameNotification 
UIApplicationDidChangeStatusBarOrientationNotification 
UIApplicationDidEnterBackgroundNotification 
UIApplicationDidFinishLaunchingNotification 

等等等等。檢查Notifications文檔中UIApplication類參考

+0

我不認爲我很清楚......我只是想知道這是否可能,而不是解決方法。請參閱我與Michael Dautermann的討論,瞭解更多信息。 – CodaFi 2012-03-27 03:45:35

+0

@CodaFi這不是一個工作。一次只能有一個委託會得到這些方法調用。所以有一件事是,你將這個委託設置到你的類中,可能在你的視圖沒有加載,或者你創建了你的類的對象,並且你的類中的所有方法調用都不在AppDelegate類中。就我的觀點而言,應該沒有任何問題。但我會建議通知,而不是設置委託。現在決定取決於你。 – 2012-03-27 04:04:13