2011-04-25 78 views
3

我有一個NSAutoreleasePool線程,用於從Web服務拉下信息,我有很好的web服務代碼,我可以觸發線程在視圖中啓動控制器沒有任何問題,實際上它的工作非常好。從appdelegate中的線程觸發多個視圖控制器中的事件

我想:

  • 移動線程實例到的appDelegate - 簡單!
  • 具有周期性地運行,並以某種方式告訴其下(5 - 10)的viewcontrollers如果有新的信息被下載
  • 必須手動執行調度的外螺紋容量

我可以啓動一個方法在使用performSelectorOnMainThread的appdelegate,但我如何讓我的子視圖控制器「訂閱」到appdelegate上的方法?

回答

3

使用NSNotificationCenter你可以很好地發佈通知:D 這種方式沒有appDelegate現在其他類,其他類可以「訂閱」他們需要的通知。

此外,我會保持線程活着,每次產生一個新的線程是昂貴的,只有經常產生OFC。我會推薦使用GCD(iOS 4+)

+0

真棒我會玩這個:)我來自PocketPC開發,所以我完全向後嘿 – 2011-04-25 23:40:36

1

使用NSNotificationCenter發送您的視圖控制器正在觀察的事件?

3

這裏就是你要做的:

從課堂上發的消息,發佈類似通知:

[[NSNotificationCenter defaultCenter] postNotificationName: @"YOUR_NOTIFICATION_NAME" object: anyobjectyouwanttosendalong(can be nil)]; 

在你想貼的時候要通知的通知的視圖控制器:

在viewDidLoad中做到:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(METHOD_YOU_WANT_TO_INVOKE_ON_NOTIFICATION_RECEIVED) name:@"YOUR_NOTIFICATION_NAME" object:sameasbefore/nil]; 

重要!不要忘記這一點在你的viewDidUnload():

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"YOUR_NOTIFICATION_NAME" object:sameasbefore/nil]; 

我不是很肯定與通知相關聯的對象,但你可以看看,最多here

注意:當只有一個對象,通知另一一個,你最好使用協議:)但在這種情況下,因爲有多個視圖控制器聆聽,使用通知

+0

我希望我能設置兩個爲正確的答案:/ – 2011-04-26 01:19:18

+0

無所謂,只要你的問題解決:)祝你好運! – Sid 2011-04-26 01:32:19

相關問題