Рассмотрим следующий код, включающий SpecialRequest
, в котором есть член result
, который не заполняется сразу:
- (NSArray *)getXboxSizedArray {
SpecialRequest *request = [SpecialRequest request];
request.someParam = 11; //and so forth...
[request start];
}
И скажем, что есть обратный вызов для requestFinished
:
- (void)requestFinished:(SpecialRequest *)request {
//hooray!
}
Я хочу вернуть значение request.result
, но, конечно, только после того, как запрос будет выполнен (что я узнаю из -(void)requestFinished
. Как мне это сделать?
Редактировать. Обратите внимание, что я попытался поместить выражение return в блок и потерпел неудачу.
Редактировать 1: Вот пример плохого и нерабочего кода, если вы заинтересованы:
- (NSString *)getAllDogFoodBrand {
__unsafe_unretained __block ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"some_url"]];
request.delegate = self;
[request setCompletionBlock:^{
[self.delegate objectControllerDidFinishRequestWithStatus:request.responseStatusMessage];
//return request.responseString; <-- this line makes compiler :(
}];
[request startAsynchronous];
}