这是我的第一个问题,请原谅我是否犯了错误!在后台调用代理的方法
在我的iPhone项目中,我有一个方法运行在一个需要很长时间才能执行的线程中(这就是为什么它在一个线程中运行的原因)。
[NSThread detachNewThreadSelector:@selector(methodToBeCalledInAThread) toTarget:self withObject:nil];
// ...
-(void)methodToBeCalledInAThread {
MyClass *myClass = [[MyClass alloc] init];
[myClass setDelegate:self];
[myClass veryIntensiveComputing];
[myClass release];
}
我的目标是通知ViewController调用此方法中进行的任何进度的方法。这就是为什么我将ViewController设置为类的委托。
现在,在昂贵的方法,我做到以下几点:
if(self.delegate != nil) {
[self.delegate madeSomeProgress];
}
但不幸的是,这并不工作,因为(我认为),我在后台线程。
我该如何实现以异步方式执行的方法通知代理的任何更改?
的确,他们是。 ;)几分钟前,我发现了performSelectorOnMainThread方法。 我最后在background-thread-class中添加了另一个方法,它由“performSelectorOnMainThread”调用。所以这个方法在主线程上调用委托的方法,一切正常。谢谢! – 2010-09-01 15:36:07