1

我创建了一个navigationcontroller其中一个视图控制器可能会被推多次..for例如,如果我们说,我们已经创建了一个视图控制器与内存位置<x1234>和我在指数5索引一次加一次7 ...记忆呢?它会在一段时间后崩溃还是没有问题,因为我总是使用同一个对象?uinavigation控制器堆叠存储管理

回答

0

您水湿添加一个视图控制器几次到一个堆栈。但是您可以创建多个实例(它们将具有不同的内存位置)并将它们推入导航堆栈。当然,如果你将创建> 1000个实例,那么你的应用程序将崩溃。实际上,堆栈通常包含1-10个视图控制器,并且所有工作都正常。

1

你不能推完全相同的对象到导航控制器堆栈more than once

重要在iOS版2.2和更高版本,如果在的viewController 参数的对象已经是导航堆栈上,这种方法抛出一个 异常。在iOS的早期版本中,该方法根本不做任何事情。

但是你可以把不同的场合的同一视图控制器

的iOS将发送内存警告(在这里你可以清除任何临时存储,您可以重新创建),并卸载不可见的任何意见。这意味着新视图控制器的开销相对较小,但不为零。有超过这个限制,你会得到问题,但在实践中,只要你正确地遵守内存管理规则,它是非常高的。当然高于制作可用UI所施加的限制。

+0

我想跟踪堆栈虽然...如果不是这样会发生控制器阵列? – 2012-02-16 11:36:58

+0

视图控制器仍在堆栈中。它只是卸载与之相关的视图。 – 2012-02-16 11:59:32