autorelease何时发布

我期望开发一个应用程序,其中将有基于用户交互创建的“n”个视图。 如果每个视图都是使用autorelease动态创建的,那么视图什么时候会真正释放?

假设有10个视图,都是使用autorelease动态创建的视图:

  • 视图1已创建并添加到导航堆栈,用户将显示视图1
  • 用户移动到另一个视图“视图2”,视图1被推出堆栈并添加视图2。 将视图1发布在这里? 我不希望它被释放,所以我应该保留它?
  • 问题是,我可能不知道我创建了多少个视图,因此手动释放它们可能是问题,还是有办法?
  • 我在这里有点困惑。

    谢谢


  • 你不添加视图到导航堆栈,你添加视图控制器。
  • 当你推视图控制器2时,第一个不会被释放,不。 导航控制器将始终保留所有视图控制器,直到它们从堆栈弹出。 它只会在未显示的视图控制器上调用-unloadView以释放一些内存,但如果您在视图控制器的loadView方法内创建视图,则会自动重新创建所有内容。
  • 你不手动释放任何东西,你只能释放它。 由于导航控制器将保留添加到堆栈上的任何视图控制器,因此您可以自由释放它。
  • 从你提出问题的方式来看,我注意到你一般都缺少一些关于iOS SDK,MVC和OOP的基本知识。 我诚实地建议你先尝试创建一个比你的聊天应用程序更简单的应用程序,以便学习一些基础知识。


    如果您发布代码的关键部分,这将有所帮助,这样我们就可以看到您在做什么。 简而言之,如果视图控制器在导航堆栈中,它将被导航控制器保留。 如果它弹出但你想保留它,你需要保留它从另一个控制器,可能是一个呈现它的人。

    链接地址: http://www.djcxy.com/p/53277.html

    上一篇: When will a autorelease get released

    下一篇: Use autorelease when setting a retain property using dot syntax?