我正在为客户开发一个应用程序,他的一个设备(iOS4上的第二代iTouch)在启动应用程序时遇到问题。我运行了一些分配/泄漏测试,并得出结论,我的应用程序代码没有任何问题。我注意到启动时有一个分配峰值,我得出结论,这是因为dyld在启动时动态链接库。我如何在xcode4中预绑定应用程序?
OS X论坛似乎非常缺乏信息,因为他们认为你能够找到它。 :/
任何帮助将不胜感激。 谢谢!
(我也希望我能为“预绑定”制作一个新标签)
答案 0 :(得分:1)
据Apple称,you shouldn't need to prebind your iOS applications。如果你得到大量的分配峰值,我猜这是由于你的应用程序架构而不是底层操作系统本身。
答案 1 :(得分:1)
与甚至运行时最早阶段所做的最基本的分配相比,dyld分配的内存应该是微不足道的。 Objective-C运行时和其他系统框架/库分配了一系列正常工作所需的内部结构。
例如,快速测试一个应用程序,该应用程序在main中不执行任何操作但只调用NSLog(@"FooBar");
然后休眠(即从不调整UIApplication)执行373次分配,总共52K生活。
更进一步,如果你真的启动了UIKit,就像这样...
UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class]));
...一旦应用程序达到静止状态,你将在~7800生活分配中看到~600K。这都是不可避免的事情。没有任何预先绑定可以为您节省费用。我建议不要担心。
如果你看到更多的内存被分配,那么正如Nik Reiman所说,这是你的应用程序。在一天结束时,动态链接器分配的内存是完全无关紧要的。