在我的应用程序中,当按下某个按钮时,我调用一个方法(postButtonClicked:
),该方法在一个单独的线程上解析Web服务。然后,我向用户显示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 {
...
}
这一切都很好UNTIL我将alertView:clickedButtonAtIndex:
添加到视图控制器(我显示的另一个UIAlertView
所需)。现在,每次拨打postButtonClicked:
时,应用程序都会崩溃。但是,如果我删除alertView:clickedButtonAtIndex:
,然后拨打postButtonClicked:
,该应用就可以了。
我不确定我需要做些什么来解决这个问题。
答案 0 :(得分:0)
无论警报视图委托方法的内容是否与成功/失败消息相关,它仍然可能是一个问题,因此向我们显示该方法的内容可能是获得答案的唯一方法。无论哪种方式,当您在成功/失败消息上点击“确定”时都会调用警报视图委托方法,因为您将警报委托设置为self
。如果您不希望在解除成功/失败警报时调用该方法,请不要设置该委托。