代码之家  ›  专栏  ›  技术社区  ›  jennykwan

跟进视图卸载与取消锁定问题

  •  7
  • jennykwan  · 技术社区  · 14 年前

    澄清问题的后续行动:

    What exactly must I do in viewDidUnload? When should I release objects in -(void)viewDidUnload rather than in -dealloc?

    所以假设有一个内存不足的错误,并且视图是隐藏的,并且调用了viewdidUnload。我们做释放和零舞。稍后,不需要整个视图堆栈,因此调用dealloc。因为我已经有了版本,在viewdidunload中没有任何内容,所以在dealloc中没有。很完美。

    但如果没有内存不足错误,则不会调用viewdidUnload。DealLoc被调用,因为我没有发布版本和零内容,所以内存泄漏。

    换句话说,如果不首先调用viewdidUnload,是否会调用dealLoc?

    实际的后续行动是,如果我在viewdidload中分配和设置了一些东西,并且我在viewdidunload中释放它并设置为nil,我是将它放在dealloc之外,还是在dealloc中做一个防守性的nil检查并释放/nil,如果它不是nil?

    1 回复  |  直到 14 年前
        1
  •  8
  •   progrmr    14 年前

    两个都松开。你不需要检查零。零分释放什么都没有。

    但是,在viewdidUnload中,不要释放在viewdidLoad中不容易重新创建的ivar,以防视图再次加载。

    通常(没有内存警告)不调用viewdidunload,只调用dealloc。