2011-12-13 3 views
0

В одном из моих предыдущих пост кто-то предложить мне использоватьКак я могу использовать NSURLConnection сделать соединение в фоновом режиме

NSURLConnection *conn = [NSURLConnection connectionWithRequest:theRequest delegate:self]; 

Для того, чтобы соединение в новом потоке, чтобы держать GUI работать без замораживания во время соединения. Но теперь я могу понять, что это не работает.

Это целый метод.

- (void)postRequestWithURLState:(NSString *)url 
{ 
    NSString *bodyRequest = nil; 
    NSURL *requestURL = [NSURL URLWithString:url]; 
    NSMutableURLRequest *theRequest = [[NSMutableURLRequest alloc] init]; 

    //NSLog(@"-------------- bodyRequest: %@", bodyRequest); 



    [theRequest setURL:requestURL]; 
    [theRequest setTimeoutInterval:2.0]; 
    [theRequest setHTTPMethod:@"POST"]; 
    [theRequest setHTTPBody:[bodyRequest dataUsingEncoding:NSASCIIStringEncoding]]; 
    [self.oauthAuthentication authorizeRequest:theRequest]; 
    NSURLConnection *conn = [NSURLConnection connectionWithRequest:theRequest delegate:self]; 

    self.web = conn; 


} 

Это часть класса, называемого greader. Поэтому я использую этот метод в этом режиме.

reader = [[greader alloc] init]; 
    [reader setDelegate:self]; 

Чем я его называю [читатель postRequestWithURLState: url]. Но таким образом он все же заморозит мое приложение в течение нескольких секунд. Как я могу выполнить это действие, не замораживая мое приложение в течение нескольких секунд?

+0

Вы делаете что-то отнимает много времени в какой-либо из методов делегата? –

ответ

0

Это странно. Я не понимаю, почему этот метод заморозит ваш пользовательский интерфейс.

Одним простым решением является вызов метода в отдельном потоке. Сделайте читателю свойство (или передать его методу ниже):

-(void)postReaderRequest:(NSURL)url { 
    [self.reader postRequestWithURLState:url]; 
} 

, а затем

[self performSelectorInBackground:@selector(postReaderRequest) 
    withObject:[NSArray arrayWithObject:url]]; 

Если результат будет таким же, оно должно быть что-то еще.

+0

Я попробую ... Во всяком случае, что-то еще похожее на что? Каков наилучший способ сделать то, что я ищу? –

+0

'NSURLConnection' - это правильный путь. Ваш замораживание пользовательского интерфейса, скорее всего, происходит от чего-то еще (код не отправлен). – Mundi

0

Попробуйте использовать NSThread выполнить ваш NSURLConnection