2012-07-26 92 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

相關問題