Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone iOS模拟内存警告问题_Iphone_Ios_Memory_Warnings - Fatal编程技术网

Iphone iOS模拟内存警告问题

Iphone iOS模拟内存警告问题,iphone,ios,memory,warnings,Iphone,Ios,Memory,Warnings,当我触发模拟记忆警告时,我看到一些意想不到的行为,我希望有人能解释 我的应用程序包含一个UIAbbarController和一个UINavigationController。我所有的UI都是以编程方式创建的,没有任何东西是从NIB加载的。在我的委托函数ApplicationIDFinishLaunching中,我创建选项卡控制器、导航控制器和五个视图控制器。当我触发内存警告时,主视图将完全变为白色,将导航保留在顶部,选项卡保留在底部。当我更改选项卡时,新选项卡将正确地重新加载其数据,因为load

当我触发模拟记忆警告时,我看到一些意想不到的行为,我希望有人能解释

我的应用程序包含一个UIAbbarController和一个UINavigationController。我所有的UI都是以编程方式创建的,没有任何东西是从NIB加载的。在我的委托函数ApplicationIDFinishLaunching中,我创建选项卡控制器、导航控制器和五个视图控制器。当我触发内存警告时,主视图将完全变为白色,将导航保留在顶部,选项卡保留在底部。当我更改选项卡时,新选项卡将正确地重新加载其数据,因为loadView被正确调用,但是导航控制器将消失

这让我感到困惑,原因有两个。1) 为什么要卸载主视图?我认为在活动视图控制器上不会调用viewDidUnload。2) 为什么我的导航控制器会消失,但只有在更换选项卡后才会消失。这真是个谜


谢谢。

听起来像是内存问题。您可能需要
保留为UITabBarController和UINavigationController创建的对象。
在unload方法中,您需要释放这些


苹果公司有一本优秀的手册,解释了Objective C中的内存管理:“。非常清楚且有用。

问题归结为我如何使用UIViewController、UIViews和UINavigationController。我有5个视图控制器,每个视图在~3个视图之间动态交换。这有点奇怪,是我的第一个iOS项目和不理解“苹果方式”的副产品

最后,我简单地从我的应用程序中删除了UINavigationController的所有概念,并编写了自己的应用程序。我不使用动画从一个视图到下一个视图,所以这是难以置信的简单和容易做到


吸取的教训。

如果您发布一些代码,可能会有所帮助。如何创建控制器,如何声明属性?我不认为这是一个保留问题。如果是这样的话,它将立即崩溃。我唯一的问题是,当我选择“simulate memory warning”(模拟内存警告)时,操作系统会在视图处于活动状态时强制其解除锁定。(点击enter early,oops)我不认为这是一个保留问题。如果是这样的话,它将立即崩溃。我唯一的问题是,当我选择“simulate memory warning”(模拟内存警告)时,操作系统会在视图处于活动状态时强制其解除锁定。发帖代码很复杂,所以很棘手。我的应用程序委托创建一个UITabBarController、UINavigationController和5个自定义视图控制器。当我“模拟内存警告”时,所有5个视图控制器的视图都被释放,即使其中一个当前正在使用!我仍然认为这可能是内存问题:自动释放的对象在未定义的时间内可用,在您尝试访问它们时,它们可能有效,也可能无效。这取决于确切的代码配置。添加或删除一行会有所不同。相信我,我有一些问题。