2011-04-25 80 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

相关问题