我遇到了一个问题,即创建 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 对象中执行警报视图时,一切都很好。在这个本身没有视图的子对象中执行此操作允许我创建警报,但是该对象 - 不应该根据范围解除分配 - 似乎不想继续充当一个代表。
我收到的错误确实是取消分配消息,但我强烈认为这不是问题,因为如果我删除警报,所有其他东西 - 特别是,它是 storekit 购买过程的包装器 - 有效很好,所有这些委托方法都可以正常工作。
我有一个解决方案,可以让我将警报移动到父视图的方法中,但我希望不必这样做。这个限制是真的,还是我的想象?IE 我做错了什么吗?