2017-03-01 106 views
0

如果問題標題是準確的,請事先道歉。我在下面概述了我想實現的基本流程。在AppDelegate內部創建一個全局代理類

AppDelegate.h

@interface AppDelegate : UIResponder <UIApplicationDelegate, SomeFrameworkDelegate, OtherFrameworkDelegate> 


…other init stuff 

AppDelegate.m

  • 附上SomeFrameworkDelegateOtherFrameworkDelegate方法。
  • 這些方法主要是輸出消息,如連接/斷開服務。

MainViewController

  • 做的東西與這些委託的方法。
  • 連接/斷開連接時執行UI操作。等

DetailsViewController

  • 使用相同的東西,在MainViewController。

注:

  • 我想我會在AppDelegate中可以設置全局變量,然後在其他UI代碼,我會創造AppDelegate中的一個實例:

    AppDelegate *appDelegate=(AppDelegate *)[[UIApplication sharedApplication]delegate]; appDelegate.isConnected = ... appDelegate.serviceName = ...

我怎麼會檢測W¯¯如果消息到達委託方法? NSNotificationCenter/NSTimer?

即一旦委託方法被觸發就發佈通知或創建一個計時器來輪詢appDelegate中的變量。

+0

你的意思是說;你的AppDelegate中有一些變量,你希望其他類在改變值時得到通知?如果是這樣,那麼你可能應該使用KVC ....否則我不完全理解你的問題。 –

+0

由於您正在更改委託方法中的值,因此您可以在其中發佈通知。這樣,任何有興趣的視圖控制器都會被通知。 –

回答

1

這聽起來像你正試圖處理/管理應用程序委託中的連接。 AppDelegate的目的是響應應用程序級別的事件,如applicationdidbecomeactive/applicationwillenterforeground。我的建議是你創建一個單身來管理你的連接。這通常被稱爲sharedInstance模式。這個單例應該實現managedObject的委託函數。實施後你有幾個選擇。

在這種情況下,我建議使用NSNotification因爲你試圖找出一個連接狀態的變化。如果您希望收到關於對象屬性的每個更改的通知,那麼您應該使用KVO。

0

你真的回答了你自己的問題。當觸發時,我會使用NSNotificationCenter在委託方法中發佈通知。然後,在您的視圖控制器中,觀察該通知並作出迴應。

相關問題