【发布时间】:2011-10-02 07:57:09
【问题描述】:
我正在尝试覆盖 UIViewController 子类中的设置器 setView,原因是 UIViewController 中的 setView 自动释放视图,我想自己处理内存管理。
我正在尝试用下面的 setView 覆盖 setView:
-(void)setView:(UIView *)view
{
if (_view != view)
{
[_view release];
_view = [view retain];
}
}
但是编译器似乎没有找到 _view ivar,所以我很想知道 UIViewController 中的 setView 设置器是什么样的?或者我可以自己处理视图属性内存的任何其他方式?
【问题讨论】:
-
你为什么要这样做?
-
我的视图控制器有一个自定义视图,它有一个渲染循环并尝试访问已经发布的变量。所以我试图在它这样做之前发布这个视图。
-
通常的做法是在发布时将这些变量设为 nil,然后在访问它们时检查 nil,不是吗?然后,如果它们为 nil,则可以取消渲染循环。
-
@mackworth 是的,我正在考虑这种方法,但我认为它会很混乱。我最终只是将它们留在内存中并检查属性以呈现变量。将它们留在记忆中可能是一个坏主意,但我认为现在可以。谢谢大家
标签: iphone objective-c cocoa-touch uikit