Вопрос

В моем приложении, когда нажимается определенная кнопка, я вызываю метод (postButtonClicked:), который анализирует веб-сервис в отдельном потоке.Затем я показываю пользователю UIAlertView чтобы сообщить им, был ли звонок успешным или нет.

Вот код, который я использую:

- (void)postButtonClicked:(id)sender {
    [NSThread detachNewThreadSelector:@selector(postViaWebservices) toTarget:self withObject:nil];
}

- (void)postViaWebservices {

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    WebServiceManager *wsm = [[WebServiceManager alloc] init];

    BOOL success = [wsm callPost];

    if (success) {
        [self performSelectorOnMainThread:@selector(postSuccess) withObject:nil waitUntilDone:NO];
    } else {
        [self performSelectorOnMainThread:@selector(postFailure) withObject:nil waitUntilDone:NO];
    }   

    [wsm release];

    [pool release];

}

- (void)postSuccess {

    UIAlertView *alert = [[UIAlertView alloc] 
                          initWithTitle:nil
                          message:@"Success message"
                          delegate:self
                          cancelButtonTitle:@"OK"
                          otherButtonTitles:nil];

    [alert show];
    [alert release];

}

- (void)postFailure {

    UIAlertView *alert = [[UIAlertView alloc] 
                          initWithTitle:nil
                          message:@"Failure message"
                          delegate:self
                          cancelButtonTitle:@"OK"
                          otherButtonTitles:nil];

    [alert show];
    [alert release];

}

- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

    ...

}

Все это работало нормально, ПОКА я не добавил alertView:clickedButtonAtIndex: к контроллеру представления (требуется для другого UIAlertView Я показываю).Теперь, каждый раз, когда я звоню postButtonClicked:, приложение выходит из строя.Однако, если я удалю alertView:clickedButtonAtIndex:, затем позвоните postButtonClicked:, приложение работает нормально.

Я не уверен, что мне нужно сделать, чтобы исправить это.

Это было полезно?

Решение

Независимо от того, имеет ли отношение содержимое метода делегирования просмотра предупреждений к сообщениям об успехе / сбое, это все равно может быть проблемой, поэтому показать нам содержимое этого метода может быть единственным способом получить от вас ответ.В любом случае, метод делегирования просмотра оповещений вызывается, когда вы нажимаете "ОК" в сообщениях об успехе / сбое, поскольку вы настраиваете делегирование оповещений как self.Если вы не хотите, чтобы метод вызывался при отклонении предупреждений об успехе / сбое, не устанавливайте делегат.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top