2012-07-26 60 views
0

我已经打了一个电话给一个类的方法从的appDelegate像这样:从方法中调用方法取消了主线程

RankingAndSMProcess *process = [RankingAndSMProcess alloc]; 

    [process performSelectorInBackground:@selector(DoRankingAndSocialMediaProcessing) withObject:nil]; 

    [process release]; 

此方法调用其他方法:

 @try { 
     [self GoForRankingProcess]; 
     [self updateItemsForPeerindex]; 
     [self updateItemsForKloat]; 
     [self updateItemsForKred]; 
    } 
    @catch (NSException *exception) { 
     NSLog(@"An Error has been occured:%@", exception); 
    } 
    @finally { 
     [items release]; 
     [profile release]; 
    } 

是否所有在RankingAndSMProcess中的DoRankingAndSocialMediaProcessing方法中调用的方法必须以与后台线程上的DoRankingAndSocialMediaProcessing相同的方式调用?或者在这里还有另一个潜在的问题?

目前我不认为任何处理方法正在被解雇,因为没有收集到新的数据。

在添加更改调用以在后台执行之前,所有方法和整个过程按预期工作。

回答

0

创建一个NSOperation并将此操作添加到NSOperationQueue。 这将创建一个与主线程并行的新线程,它也会执行您的方法。

下面是一些有用的链接:

NSOperation on the iPhone

http://www.icodeblog.com/tag/nsoperation/

http://www.cimgf.com/2008/02/16/cocoa-tutorial-nsoperation-and-nsoperationqueue/

希望这会帮助你。

享受编码:)

+0

你好,很高兴这可以帮助你。如果你满意,你可以请同样的投票。 :) – Mrunal 2012-07-26 14:10:30

0

这些其他方法在做什么?如果它是一个实例的网络请求,可能需要运行循环才能使后台线程真正能够执行任务。

+0

是的,他们都需要建立一个网络连接,并在@try块之前检查。你能否简单地解释一下如何实现一个合适的运行循环来实现这个功能? – Jace 2012-07-26 09:12:44