在某些情况下,您希望使用自己的动画(而不是使用 presentModalViewController:animated:
或 UIAlertView
)来呈现警报样式的 View Controller 。
释放这个 View Controller 的正确方法是在 View 消失时调用一个回调,但是设置一个委托(delegate)和所有这些似乎都是多余的。
所以我这样做:
- (void)dismiss
{
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
self.view.alpha = 0;
} completion:^(BOOL finished) {
[self.view removeFromSuperview];
[self autorelease];
}];
}
并且呈现对象不会释放或自动释放 View Controller 。明智的内存管理我认为这没有问题。这是不好的做法吗?
最佳答案
我会考虑这种不好的做法。
仅调用了 retain
的对象在这个对象上应该调用 release
或 autorelease
在上面。
我假设你没有调用 [self retain]
我什至不确定这是否会像您期望的那样工作。你能保证self
那时需要释放,为什么保留它的对象不能称为 release
本身?。你是要强制self
至dealloc
?
如果 self
此时已解除分配,任何其他期待 self
的对象仍然活着会将消息传递给 nil,或者更糟糕的是,内存可能会被重新分配,并且这些对象将向任意对象发送消息。
关于objective-c - [ self 自动释放] 可以接受吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11577024/