2011-08-29 77 views
0

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

比方说有10次,与自动释放所有被动态创建的视图:,用户被示出图1

  • 用户移动到另一视图“

    1. 视图1被创建并添加到导航堆栈查看2“,查看1被推出堆栈并添加查看2。将视图1发布在这里?我不希望它被释放,所以我应该保留它?
    2. 问题是,我可能不知道我创建了多少个视图,因此手动释放它们可能是问题,或者有什么办法?

    我在这里有点困惑。

    感谢

  • 回答

    2
    1. 你不视图添加到导航堆栈,您可以添加视图控制器。
    2. 当你推视图控制器2时,第一个不会被释放,没有。导航控制器将始终保留所有视图控制器,直到它们从堆栈弹出。它只会在未显示的视图控制器上调用-unloadView以释放一些内存,但如果您在视图控制器的loadView方法内创建视图,则会自动重新创建所有内容。
    3. 你不手动释放任何东西,你只能释放它。由于导航控制器将保留添加到堆栈上的任何视图控制器,因此您可以自由释放它。

    从你提问的方式来看,我注意到你一般都缺少一些关于iOS SDK,MVC和OOP的基础知识。我会诚实地建议您先尝试创建一个比that chat app of yours更简单的应用程序,以便学习一些基本知识。

    +0

    HI fichek,对不起,我的意思是说视图控制器和释放(对不起,我用了dealloc) - 仍然习惯IOS行话。我当然在尽我所能,学习,同时我希望像你这样的专家能够帮助我学习。我找不到有关视图控制器如何在导航堆栈内发布的任何文档,因此我在这里提出。你能指点我一些资源吗? – Veeru

    +0

    这就是StackOverflow的用途;)你在iTunes U上看过CS193P视频吗?它们是我可以向任何人推荐的最好的iOS开发资源。 –

    +0

    谢谢,我正在看这些视频。我将它从导航堆栈弹出时释放视图控制器,如何在不释放的情况下保留它? – Veeru

    1

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

    +0

    嗨,彼得,我甚至没有写一行代码,我只是想找到问题的答案,所以我不会开始在一个奇怪的方向。我只是寻找资源,可以帮助我学习一些东西,然后才能进入应用程序 – Veeru

    +0

    酷。我的建议是:跳入并破坏事物。这就是最好的程序员如何学习,然后你就可以提出具体的问题,你会得到很好的答案。 –

    +0

    这就是我试图做的彼得,我还是IOS新手,习惯如何在IOS中工作:) – Veeru

    相关问题