在我的应用程序,当按下某一按钮时,我认为这种分析在单独的线程的web服务的方法(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