我必须释放这个变量吗?

Posted

技术标签:

【中文标题】我必须释放这个变量吗?【英文标题】:Do I have to release this variable? 【发布时间】:2011-04-05 07:04:31 【问题描述】:
UIViewController *parentController;
for (UIView* next = [self superview]; next; next = next.superview) 
    UIResponder* nextResponder = [next nextResponder];
    if ([nextResponder isKindOfClass:[UIViewController class]]) 
        parentController = (UIViewController*)nextResponder;
    

在这段代码中,我必须释放 parentController 吗? 那么,什么时候?

【问题讨论】:

【参考方案1】:

由于您没有取得 parentController 对象的所有权(保留/分配/复制/新),因此您不必释放它。

【讨论】:

【参考方案2】:

你没有释放它,因为你没有增加它的保留计数(newallocretaincopy)。

【讨论】:

【参考方案3】:

没有。你没有取得所有权,所以也不需要释放它。

【讨论】:

你的代码的目的有点让人头疼。 您似乎正在朝着包含视图控制器的方向努力,打破了正确的 MVC 结构。使用指针到达那里通常更干净。

以上是关于我必须释放这个变量吗?的主要内容,如果未能解决你的问题,请参考以下文章

我应该在 dealloc 中释放实例变量和属性吗?

自动释放:必须[保留]成员变量?

我可以使用 OpenMP 通过单个线程释放共享变量吗?

java在循环语句的执行语句赋予变量值循环结束后会释放吗?

信号量互斥量同步变量条件变量和事件变量

C语言 调用函数完后释放内存吗?