2

我遇到了一个问题,即创建 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 我做错了什么吗?

4

0 回答 0