我遇到一个问题,即创建UIAlertView的对象正在将消息发送回其委托,但委托对象正在崩溃。
我已经在其他几个实例中运行正常,但我在这种情况下尝试做的事情(以及与其他类似问题的不同之处)是实例化警报的对象,以及作为它的委托本身不是一个视图,而是一个在视图中实例化的对象。也就是说,在父视图中:
@implementation
*MyCustomObject customObject;
-(void)viewDidLoad {
customObject = [[MyCustomObject alloc] init];
}
@end
在自定义对象中:
-(void)DoCoolThings {
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Do You Want To Do Cool Things"
message:@"...description of cool things..."
delegate:self
cancelButtonTitle:@"No Thanks"
otherButtonTitles:@"HELLS YES", nil];
[message show];
}
和
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 1) {
[self DoCoolThings];
} else {
[self GoAndCry];
}
}
当我在viewcontroller对象中执行警报视图时,一切都很好。在这个本身没有视图的子对象中执行它允许我创建警报,但是该对象 - 不应该根据范围进行解除分配 - 似乎不想继续充当代表。
我得到的错误确实是一个解除分配的消息,但我强烈认为这不是问题,因为如果我删除警报,所有其他的东西 - 具体来说,它是商店购买流程的包装器 - 工作正常,所有这些委托方法都很愉快。
我有一个解决方案,允许我将Alert移动到父视图的方法中,但我希望不必这样做。这种限制是真实的,还是我的想象力?我在做其他错误的IE吗?