все. Я хочу понять, как i shoud выдает ситуации, когда асинхронный метод имеет параметр «didFinish: @selector (SEL)». Мой пример кода:Как лучше подождать, когда асинхронный метод будет завершен в приложении iPhone?
//
// Authentication check
- (void)authenticationSuccess: (GDataServiceTicket*) ticket
authenticatedWithError: (NSError*) error {
if (error == nil)
{
NSLog(@"authentication success");
}
else
{
NSLog(@"authentication error");
}
}
//
- (void) fetchFeedOfSpreadsheets {
//create and authenticate to a google spreadsheet service
if (!(mService))
{
GDataServiceGoogleSpreadsheet *service = [self spreadsheetService];
[mService autorelease];
mService = [service retain];
}
// check autentication success (invoke "authenticationSuccess" method for debug success & error)
[mService authenticateWithDelegate: self
didAuthenticateSelector:@selector(authenticationSuccess:
authenticatedWithError:) ];
// HERE I WANT TO MAKE A PAUSE AND WHAIT THE RESULT, EITHER I AUTHENTICATED OR NOT
// AND MAKE AN "IF" STATEMENT TO CONTINTUE WORKING ON SERVER, OR RETURN ERROR
//fetch retrieves the feed of spreadsheets entries
NSURL *feedURL = [ NSURL URLWithString: kGDataGoogleSpreadsheetsPrivateFullFeed ];
GDataServiceTicket *ticket;
ticket = [mService fetchFeedWithURL: feedURL
delegate: self
didFinishSelector: @selector(spreadsheetsTicket:finishedWithFeed:
error:) ];
// HERE I WANT TO WAIT SECOND TIME. I WANT "spreadsheetsTicket:
// finishedWithFeed:error:" TO PROCCEED ERROR AND PUT A FEED IN SOME NSARRAY OBJECT
// AND AFTER THAT I WANT TO WORK WITH THAT NSARRAY RIGHT HERE
}
I Понятно, что я могу нажать на код я хочу в конце «authenticationSuccess» метод секции, но также ясно, что это неправильно способ решить proble. Там существует несколько ситуаций, когда я вызываю асинхронный метод с параметром селектора, и я хочу найти решение, обеспечивающее гибкую запись кода.
Заранее спасибо.
Спасибо за ответ, Yuji. – zkaje 2010-12-02 14:46:44