uiviewcontroller中的setView方法是如何实现的?

时间:2011-07-10 17:40:04

标签: iphone objective-c cocoa-touch uikit

我正在尝试覆盖UIViewController子类中的setter setView,原因是UIViewController中的setView自动释放视图,我想自己处理内存管理。

我正在尝试使用我的setView覆盖setView:

-(void)setView:(UIView *)view
{
if (_view != view)
   {
    [_view release];
    _view = [view retain];
   }
}

但编译器似乎找不到_view ivar,所以我很想知道UIViewController中的setView setter是什么样的?或者我自己可以处理视图属性的任何其他方式吗?

2 个答案:

答案 0 :(得分:1)

看起来应该大致如下:

-(void)setView:(UIView *)view
{
    if (_view != view)
    {
        [_view release]; // Release _view, not view
        _view = [view retain];
    }
}

答案 1 :(得分:0)

您可以在设置之前始终保留视图。它将不会自动释放,直到ref计数< 1。