0

我正在为客户开发一个应用程序,他的一台设备(iOS4 上的第二代 iTouch)在启动应用程序时遇到问题。我已经运行了一些分配/泄漏测试,并得出结论认为我的应用程序代码没有任何问题。我注意到启动时出现分配峰值,我得出结论这是因为 dyld 在启动时动态链接库。我将如何在 xcode4 中预绑定应用程序?

OS X 论坛似乎信息量极少,因为他们认为您可以找到它。:/

任何帮助,将不胜感激。谢谢!

(我也希望我可以为“预绑定”制作一个新标签)

4

2 回答 2

1

根据 Apple 的说法,您不需要预先绑定您的 iOS 应用程序。如果您遇到较大的分配高峰,我猜这是由于您的应用程序架构而不是底层操作系统本身。

于 2011-12-08T15:38:47.897 回答
1

dyld 分配的内存与运行时最早阶段的最基本分配相比应该是微不足道的。Objective-C 运行时和其他系统框架/库分配了一堆正常工作所需的内部结构。

例如,对一个应用程序进行快速测试,该应用程序在 main 中什么都不做,只调用一次NSLog(@"FooBar");然后休眠(即,甚至从不启动 UIApplication)执行 373 次分配,总共 52K 生活。

更进一步,如果你真的启动 UIKit,像这样......

UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class]));

...一旦应用程序达到静止状态,您将在 ~7800 个生活分配中看到 ~600K。这都是不可避免的事情。再多的预绑定也不会为您节省这一点。我建议不要担心。

如果您看到分配了数量级的内存,那么正如 Nik Reiman 所说,这是您的应用程序。归根结底,动态链接器分配的内存完全是微不足道的。

于 2011-12-09T21:42:15.293 回答