1

我有一个 NSObject (MyCustomObject) 的子类,它被实例化并调用以执行一些逻辑并决定是否显示 UIAlertView。MyCustomObject 实现 UIAlertViewDelegate 协议来执行更多逻辑并在 alertView:clickedButtonAtIndex: 中设置一些 NSUserDefaults。哪里适合发布 myCustomObject?如果在用户单击警报视图上的按钮之一后不再需要 myCustomObject,则 myCustomObject 可以在 alertView: didDismissWithButtonIndex: 中释放自身。

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
    NSLog(@"I'm UIAlertView's Delegate and I'm releasing myself");
    [self release];
}
4

1 回答 1

2

我认为最好为自定义对象制定一个委托协议,然后让该对象的所有者成为它的委托人。在您的类的警报视图委托方法中,向自定义委托发送一条消息,以便它可以处理释放您的自定义对象。

如果对象在调用代码中自动释放,或者调用代码尝试手动释放您的对象本身,尝试自我释放可能会产生意外行为甚至崩溃。

于 2011-03-29T20:39:03.740 回答