2010-06-22 76 views
0

当我使用仪器在模拟器中运行我的应用程序时,仪器报告了一些泄漏。所报告的泄漏对我来说没有多大意义,所以我想尝试使用该设备。但是当我从乐器开始的时候,它没有响应(它没有反应触摸,我只能按回家放弃),或者甚至没有启动只是在iphone上可见的黑屏。没有文书我的应用程序工作正常。有人知道什么是错的吗?从仪器运行时程序无法运行

UPDATE1:
我有一个UISearchBar在附加到uiSearchDisplayController的应用程序,如果我点击它,程序冻结。我只能关闭它。它应该在点击时显示一个自动完成表格。如果从模拟器运行,它会在我点击搜索栏时泄漏一些内存,但只是第一次,并且它来自nsurlconnection alloc,它是在didFailWithError和connectionDidFinishLoading委托方法中发布的。 (我已经有一个关于此问题的单独的未答复的问题。)

UPDATE2:还有一些其他泄漏报告,但唯一的代码来自我的程序是UIApplicationMain(argc, argv, nil, nil);,这对追踪它没有什么帮助。

回答

1

有没有这样的事情,只泄露出现在模拟器中。如果它在模拟器中泄漏,它会泄漏到设备上,讨论结束。

您偶尔会看到由工具插入的钩子与代码中有问题的部分进行交互所导致的任何分析工具崩溃。很可能你所遇到的是某种失控的循环。

我会建议在解决设备问题之前解决模拟器上的问题。

+0

因此,直到我解决了模拟器上的所有泄漏之前,在iphone上使用仪器是不可能的?没有任何ocasional崩溃,它使用仪器和iPhone时,它不工作,它只适用于使用仪器和模拟器。 – 2010-06-23 07:04:45

+0

什么是失控循环? – 2010-06-23 07:21:13

+0

碰撞仪器是不寻常的,但它确实发生。您通常不必首先在模拟器中修复。但是,这样做通常更容易。模拟器具有更多的内存,并且易于获取钩子。如果模拟器中不起作用,它将无法在设备上工作,所以为什么要麻烦?一个失控的循环是由自引用导致的无限递归引起的,即一个对象,对象图,方法,函数等,它们在一秒钟内通常会自动调用数万次。仪器同样必须产生数千个钩子才能跟踪并锁定。 – TechZen 2010-06-23 13:00:23