2012-04-16 23 views
-1

私のアプリケーションでは、多くの関数を呼び出す関数を呼び出す必要があります。問題は私がgetweather関数を呼び出すことであり、startprocessを開始し、その後処理が完了します。 processCompletedメソッドはrssparserによって呼び出され、値はprocessCompletedメソッドの最後で使用できます。私はgetWeather関数を呼び出しているので、私は、processCompletedメソッドから返された値を取得するにはどうすればよい関数が値を返すのを待っています

-(void) getWeather: (NSDictionary *) dictionary { 
    _rssParser = [[BlogRssParser alloc]init]; 
    self.rssParser.address = addressInterestedIn; 
    self.rssParser.delegate = self; 
    [[self rssParser]startProcess]; 
} 

//Delegate method for blog parser will get fired when the process is completed 

-(void)processCompleted 
{ 
    NSLog(@"the rssItems array is %@", [[[self rssParser]rssItems] description]); 
    int woeid = [[[[self rssParser] rssItems] objectAtIndex:0] intValue]; 
    // get weather update from yahoo 
    NSLog(@"temperature option %d", [[[NSUserDefaults standardUserDefaults] objectForKey:@"temperature"] intValue]); 
    SCYahooWeatherParser *parser = [[SCYahooWeatherParser alloc] initWithWOEID:woeid weatherUnit: [[[NSUserDefaults standardUserDefaults] objectForKey:@"temperature"] intValue]]; 
    //parse the returned xml from yahoo 
    SCWeather *result = [parser parse]; 
    [parser release]; 
    NSLog(@"the conditionDataDict is %@", [result.conditionDataDict description]); 
} 

。ちょうどあなたが関数が値を返すまで

NSInteger x = [self yourFunction]; 
[self somethingElse:x]; 

に次の命令が実行されていないように値を返す関数を呼び出す任意の構造化言語、のように客観的Cでは

答えて

1

、。言い換えれば、somethingElseはyourFunctionが終了してxの値を返すまで実行されません。

+0

質問を編集している場合。これをチェックしてください。 –

+0

私の答えは変わっていませんが、セレクタやバックグラウンドスレッドを使用していないので、返された値は常に取得され、機能を同期させる必要はありません。 –

0

- それはそこにいくつかのより多くの方法が利用可能であり、あなたがNSObjectクラスを参照することができ

performSelectorOnMainThread:withObject:waitUntilDone: 

をcomplete-ためにあなたの機能を待ちますプロセスが終了してから次の操作を実行するまで待ってください。それから、目標を達成するために何もする必要はありません。

あなたのプロセスが非常に重い場合、あなたのアプリは終了するまでフリーズすることに注意してください。別のスレッドであなたのアプリケーションをブロックすることができる、優れたカスタム実行プロセスです。

関連する問題