Библиотеки предварительного связывания в Xcode 4

Я разрабатываю приложение для клиента, и на одном из его устройств (iTouch 2-го поколения на iOS4) возникают проблемы с запуском приложения. Я провел несколько тестов на распределение / утечку и пришел к выводу, что в коде моего приложения нет ничего плохого. Я заметил, что при запуске наблюдается скачок распределения, и я пришел к выводу, что это из-за dyld, который динамически связывает библиотеки при запуске. Как мне выполнить предварительную привязку приложения в xcode4?

Форум OS X казался крайне неинформативным в том смысле, что они предполагают, что вы сможете его найти.:/

Любая помощь будет оценена. Спасибо!

(Я также хотел бы сделать новый тег для "предварительной привязки")

2 ответа

Решение

Согласно Apple, вам не нужно предварительно связывать ваши приложения для iOS. Если вы получаете большие всплески выделения, я думаю, это связано с архитектурой вашего приложения, а не с самой ОС.

Память, выделенная dyld, должна бледнеть в незначительности по сравнению даже с самыми основными выделениями, сделанными на самых ранних этапах времени выполнения. Среда выполнения Objective-C и другие системные инфраструктуры / библиотеки выделяют множество внутренних структур, которые необходимы для правильной работы.

Например, быстрый тест приложения, которое ничего не делает в основном, но делает один вызов NSLog(@"FooBar"); а затем режим сна (то есть никогда не запускающий UIApplication) выполнил 373 выделения, что в сумме составило 52 000 жизней.

Чтобы сделать шаг вперед, если вы действительно запускаете UIKit, вот так...

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

... вы увидите ~600K в ~7800 выделенных ресурсах, как только приложение достигнет состояния покоя. Это все неизбежные вещи. Никакое предварительное связывание не спасет вас от этого. Я предлагаю не беспокоиться об этом.

Если вы видите, что выделяется на порядок больше памяти, то, как сказал Ник Рейман, это ваше приложение. В конце концов, память, выделенная динамическим компоновщиком, совершенно незначительна.

Другие вопросы по тегам