我正在为一个客户开发一个应用程序,他的一个设备(iOS4上的第二代iTouch )在启动应用程序时遇到了问题。我已经运行了一些分配/泄漏测试,我得出的结论是我的应用程序的代码没有任何问题。我注意到在启动时有一个分配峰值,我得出结论,这是因为dyld在启动时动态链接库。如何在xcode4中预绑定应用程序?
OS论坛似乎非常缺乏信息性,因为他们认为你可以找到它。:/
任何帮助都将不胜感激。谢谢!
(我也希望我可以为“prebinding”创建一个新的标签)
发布于 2011-12-08 23:38:48
据苹果公司称,you shouldn't need to prebind your iOS applications。如果你得到了很大的分配峰值,我猜这是由于你的应用程序的架构,而不是底层操作系统本身。
发布于 2011-12-10 05:42:15
与运行时的最早阶段进行的最基本的内存分配相比,dyld分配的内存应该是微不足道的。Objective-C运行时和其他系统框架/库分配了一组正常工作所需的内部结构。
例如,对一个应用程序进行了快速测试,该应用程序在main中什么也不做,只调用了NSLog(@"FooBar");一次,然后休眠(即,甚至从不假脱机UIApplication),总共执行了373次分配,总共有52K的活动空间。
更进一步,如果你真的启动了UIKit,就像这样...
UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class]));..。一旦应用程序进入静止状态,您将在~7800个活动分配中看到~600K。这都是不可避免的事情。再多的预绑定也不能帮你解决这个问题。我建议不要担心这一点。
如果您看到分配的内存多了几个数量级,那么,正如Nik Reiman所说,这是您的应用程序。最后,动态链接器分配的内存是完全无关紧要的。
https://stackoverflow.com/questions/5475517
复制相似问题