Как я могу использовать NSURLConnection, чтобы установить соединение в фоновом режиме - PullRequest
0 голосов
/ 14 декабря 2011

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

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

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

Это весь метод.

- (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];

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

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

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

0 голосов
/ 14 декабря 2011

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

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

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

, а затем

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

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

...