這是我的第一個問題,請原諒我是否犯了錯誤!在後臺調用代理的方法
在我的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