Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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 iPad上的间歇性冻结_Iphone_Objective C_Ipad - Fatal编程技术网

Iphone iPad上的间歇性冻结

Iphone iPad上的间歇性冻结,iphone,objective-c,ipad,Iphone,Objective C,Ipad,我有一个iPad应用程序,它第一次构建和运行都非常完美。但是如果我退出应用程序并再次打开它,接口将完全没有响应。如果我退出并再次打开,它将永远无法通过启动屏幕 奇怪的是,如果我再等一两分钟再打开它,它总是运行良好 关于可能发生的事情或者应该从哪里开始调试工作,有什么想法吗?我会插入断点并查看发生了什么,但是当我第二次启动应用程序时,调试器已经退出。有没有办法让调试器和控制台在一个应用程序的多次执行中保持运行 谢谢 卢克 编辑:以下是我用于NSUserDefaults的一些代码-这可能是问题所在吗

我有一个iPad应用程序,它第一次构建和运行都非常完美。但是如果我退出应用程序并再次打开它,接口将完全没有响应。如果我退出并再次打开,它将永远无法通过启动屏幕

奇怪的是,如果我再等一两分钟再打开它,它总是运行良好

关于可能发生的事情或者应该从哪里开始调试工作,有什么想法吗?我会插入断点并查看发生了什么,但是当我第二次启动应用程序时,调试器已经退出。有没有办法让调试器和控制台在一个应用程序的多次执行中保持运行

谢谢

卢克

编辑:以下是我用于NSUserDefaults的一些代码-这可能是问题所在吗

在我的主视图控制器的
viewDidLoad
中:

bgnum = [prefs integerForKey:@"bgnum"];
menuVisible = [prefs boolForKey:@"menuVisible"];
songTitles = [[NSMutableArray alloc] initWithArray:[prefs arrayForKey:@"songTitles"]];
numberOfSongs = [prefs integerForKey:@"numberOfSongs"];
视图中将消失

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

[prefs setBool:menuVisible forKey:@"menuVisible"];
[prefs setInteger:bgnum forKey:@"bgnum"];
[prefs setObject:songTitles forKey:@"songTitles"];
[prefs setInteger:numberOfSongs forKey:@"numberOfSongs"];

[prefs synchronize];

连接设备后,从xCode以调试模式运行应用程序,然后退出应用程序。现在,断开USB电缆并再次运行应用程序-应用程序是否完全冻结?如果旋转设备,视图方向是否会改变?应用程序终止后,重新插入USB,进入xCode->Window->Organizer

你应该在屏幕的左侧看到你的iPad设备。选择它,您将在右侧看到控制台和崩溃报告的一些选项卡。从下拉列表中选择您的应用程序,查看是否记录了任何控制台消息,或者是否发生了崩溃-如果发生了,您应该获得堆栈跟踪,这应该会有所帮助


当我在可执行文件中将nszombie作为活动参数启用时,我曾经遇到过类似的问题,所以这也值得研究

我会查看您的初始化代码、loadView、didFinishLaunching等中发生了什么,并进行跟踪。很容易有3到4种方法深入到这些东西中,并且在其中一些应该是懒惰的时候做太多。没有更多信息或任何示例代码,这都是胡乱猜测。一个这样的猜测是用户默认值,或者是从文件或字典中预先加载的任何东西?我可以看到那里的东西是如何在几个状态之间循环的。

在“退出应用程序并再次打开它”和“等待一两分钟”之间有很大的区别,在上下文中,这意味着你做得相当快

我开发了一个相当大的应用程序,在iPad上“卸载”通常需要几秒钟,这导致我快速退出并重新进入,导致应用程序以部分配置状态出现,并导致异常行为

这可能是因为您的应用程序尚未完全解除锁定并关闭其线程,因此,当您再次快速启动它时,线程将恢复(在3.2或更早版本中,由于它已经开始停止运行,因此将变得不稳定)


做一些计时。。。查看“it崩溃”和“it工作”的阈值。如果超过10秒,那么我会说有问题。如果不是这样的话,你可以看到我刚才描述的,

你在应用程序的生命周期中运行过仪器并观察过内存和对象分配吗?我只是用分配工具运行了仪器,但我不知道如何解读它告诉我的内容。你知道关于如何使用仪器的好资源吗?仍然冻结,没有方向变化。没有崩溃报告,也没有NSZombieEnabled。不确定发生了什么事-我会继续四处看看。这是一个很好的观点-我认为违约很可能是罪魁祸首。很抱歉,我没有提供代码-很难知道从哪里开始。我已经在上面添加了我用于NSUserDefaults的代码-有没有关于什么可能是错误的想法?这可能是真的-如果用户很快退出并重新进入,您是否找到了避免问题的好方法?等待大约五秒钟似乎每次都能成功。只等三秒钟就会导致撞车。一种方法是,在iOS4中,默认情况下,应用程序不会尝试完全解除锁定,这让您感到安慰。即使是复杂的应用程序(比如我的)也能很好地支持这个站点,而且不会发生意外。。。因此,在iOS4中,您尝试执行的操作自然会起作用。在3.2或3.1中?不多您可以确保在适当的时候尽可能多地进行对象修剪,这样当应用程序完全退出时,它就没有那么多需要处理的了。