2012-03-29 56 views
0

我需要在我的應用程序中撥打getValuesAndCalculate,該應用程序只有在完成其工作後才能返回。但是,爲了完成工作,它需要從服務器獲取記錄,這需要通過異步調用完成。服務器數據通過回調函數接收。因此,在getValuesAndCalculate之前,我需要等到我有數據後再繼續進行計算。我如何實現這一點?等待回撥函數在iOS/iPhone中返回

+0

從服務器獲取數據的回調函數去協議用自己的邏輯.. – ajay 2012-03-29 07:53:23

+0

呼叫getValuesAndCalculate? – danielbeard 2012-03-29 07:54:14

+2

看一看[AFNetworking(https://github.com/AFNetworking/AFNetworking)你可以做異步請求,並使用塊來處理響應。 – rckoenes 2012-03-29 07:56:23

回答

2

使用協議和代表:

代表是什麼,但你從指定的類的對象在服務器側的對象。 服務器可以使用此對象來調用客戶端代碼中的方法。

+0

從服務器的響應或者您可以使用NSNotificationCenter響應。這被炒魷魚。一樣的。 請不要使用一種循環或類似的!在響應到來之前,您不必阻止您的應用程序。你的應用程序必須等待,直到喚醒它爲止。 – kinghomer 2012-11-10 18:12:25

0

嘗試使用NSRunloop直到您從服務器獲取數據。

對於如:

而 { [NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:1.0] }(isFinished!)

0

您可以實現對這個問題,即線程,

// in main thread 
// start activity indicator 
NSThread *calculateThread = [[NSThread alloc] initWithTarget:self selector:@selector(getValuesAndCalculate) object:nil]; 
[calculateThread start]; 
// End of Main thread 



- (void)getValuesAndCalculate 
{ 
    // Perform transactions with server 
     [self performSelectorOnMainThread:@selector(continueMainThreadOperations) withObject:nil waitUntilDone:YES]; 
} 

那就是它!