我有一个NSObject(MyCustomObject)的子类,它被实例化并调用以执行某些逻辑并决定是否显示UIAlertView。 MyCustomObject实现UIAlertViewDelegate协议以执行更多逻辑并在alertView中设置一些NSUserDefaults:clickedButtonAtIndex:。 释放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];
}
答案 0 :(得分:2)
我认为如果为自定义对象创建委托协议会更好,然后让该对象的所有者成为其委托。在您的类的警报视图委托方法中,向自定义委托发送一条消息,以便它可以处理释放您的自定义对象。
如果对象在调用代码中自动释放,或者调用代码尝试手动释放对象本身,则尝试自我释放可能会产生意外行为甚至崩溃。