在某些情况下,您希望使用自己的动画呈现警报样式视图控制器(而不是使用presentModalViewController:animated:
或UIAlertView
)。
释放此视图控制器的正确方法是在视图消失时调用回调,但是设置一个委托,所有这些看起来都有点过分。
所以我这样做:
- (void)dismiss
{
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
self.view.alpha = 0;
} completion:^(BOOL finished) {
[self.view removeFromSuperview];
[self autorelease];
}];
}
并且呈现对象不会释放或自动释放视图控制器。内存管理明智我认为没有问题。这是不好的做法吗?
答案 0 :(得分:0)
我会考虑这种不好的做法。
只有在此对象上调用retain
的对象才应在其上调用release
或autorelease
。
我确实假设你没有打电话给[self retain]
我甚至不确定这会像你期望的那样奏效。你能保证self
在那时需要释放吗?为什么保留它的对象本身不能叫release
?您是否想强制self
加入dealloc
?
如果此时释放self
,那么期望self
仍然存活的任何其他对象都会将消息传递给nil,或者更糟糕的是,可能会重新分配内存并且这些对象将消息发送到任意对象。
答案 1 :(得分:0)
看起来不好的做法却看不到任何对记忆的影响。在模态视图方面,为什么不将它弹回来,如果那是你想要实现的目标:
[self.navigationController popViewControllerAnimated:YES];