2013-06-05 2 views
0

у меня есть следующий код, чтобы сделать запросы к моим API:NSURLConnection 5 секунд задержать

-(void)makeApiCall:(NSString *)function params:(NSDictionary *)params notificationName:(NSString *)notificationName 
{  
NSURL *url = [NSURL URLWithString:kBaseUrl]; 

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; 
httpClient.parameterEncoding = AFFormURLParameterEncoding; 

NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:[NSString stringWithFormat:@"%@/%@",kApiBaseUrl,function] parameters:params]; 


NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
    NSLog(@"complete"); 
//..My code   
}];  
} 

Моей проблема заключается в том, что после NSLog (@ «полного»), приложение замораживает в течение 5 секунд .. Как я могу это исправить?

Спасибо.

+0

Ну, какой код следует за 'NSLog (@«полный»)'? Когда «полная» становится видимой на консоли отладчика, запрос наконец завершается. Так что вряд ли что-то не так с кодом, который вы опубликовали. Код, следующий за nslog, скорее всего вызывает замораживание. –

+0

Хе-хе, я бы сказал, что это зависит от того, что «//..My code» делает ^^ – Groot

+0

Вы можете попробовать нажать кнопку паузы в отладчике xcode, пока приложение кажется застрявшим, и посмотрите, показывает ли он, что это такое на самом деле – edo42

ответ

1

queue параметр sendAsynchronousRequest находится в очереди, на которой блок обработчик завершения отправляется. Если вы делаете какие-либо обновления пользовательского интерфейса в обработчике завершения , то вы, вероятно, следует вызвать метод с

queue:[NSOperationQueue mainQueue] 
+0

Работал Martin R! Спасибо, на самом деле! –

Смежные вопросы