У меня есть работающее приложение для iPhone, использующее SDK 4.0. Он не показывает утечек в инструменте «Инструменты», и я совершенно уверен, что в коде нет утечек памяти.
Затем я попытался добавить iAds в приложение, и оно начало показывать утечки памяти. Чтобы устранить проблему, я удалил весь дополнительный код.
Осталось добавить AdBannerView в файл .xib (без единого изменения рабочей версии кода без iAds). Это показывает утечки памяти.
Каждый раз при загрузке представления инструмент «Инструменты» показывает 5 пропущенных блоков по 16 байт каждый, с ответственной библиотекой «Основание» и ответственным фреймом
[NSCFString copywithZone:]
Дальнейший запуск приложения дает мне утечки из ответственной библиотеки iAd (2 утечки по 48 байт каждая) и ответственного фрейма:
[AdBrandingFrame initWithFrame:]
Далее, я также получаю 48-байтовые утечки с ответственной библиотекой 'UIKit' и ответственным кадром
-[UIView _createLayerWithFrame:]
Поскольку в моем рабочем коде нет утечки, кроме добавления AdBannerView в файл .xib, мне интересно, является ли код Apple причиной утечки. Хотя утечка относительно мала, я бы хотел ее устранить. Я понимаю, что существует вероятность того, что утечка обнаруживается, хотя ее может и не быть (указатели все еще могут удерживаться ОС некоторым образом, о котором утечки не знают - было бы здорово знать, если это так ).
Итак, у меня было два вопроса:
1) Есть ли вероятность того, что проблема на самом деле в моем коде, и утечка по какой-то причине обнаруживается только после добавления AdBannerView? Если есть такая возможность, я бы провел еще один тщательный тест кода.
2) Если это проблема с кодом Apple, и кто-нибудь из вас сталкивался с этим, есть ли какие-нибудь обходные пути, которые вы нашли?
Любая помощь будет принята с благодарностью. Спасибо!