#objective-c #audio #cocos2d-iphone
#objective-c #Аудио #cocos2d-iphone
Вопрос:
Сейчас у меня проблема. Я разрабатываю игровое приложение для iPad с помощью cocos2d. В моем приложении я использую фоновую музыку. Когда я использую музыкальный метод cocos2d SimpleAudioEngine, у меня произошла утечка. Тем не менее, мой bos не хочет утечки в нашем приложении. Любой другой способ воспроизведения фоновой музыки, кроме использования SimpleAudioEngine, без утечки?
Спасибо, прежде чем. С уважением.
Комментарии:
1. Не могли бы вы просто использовать AVAudioPlayer?
2. Есть ли другой способ установить музыку в iOS вместо использования AVAudioPlayer?
Ответ №1:
Откуда вы знаете, что у вас утечка? Часто то, что сообщается как утечка, на самом деле не является утечкой или утечкой в вашем собственном коде. В частности, статический анализатор только делает предложения, но довольно часто ошибается в своих предположениях.
Вы также можете связаться с автором библиотеки Стивом Олдмедоу, его можно найти на форуме cocos2d. По крайней мере, он может подтвердить ошибку или объяснить, почему это не утечка.
Во-вторых, я бы не придавал слишком большого значения утечкам. Давайте предположим, что при каждом запуске музыки происходит утечка 16 байт. Вам пришлось бы запускать музыку 16 000 раз, чтобы утечка составила 16 КБ. Насколько вероятно это в вашем приложении и насколько сильно вам «нужны» эти 16 КБ?
В-третьих, скажите своему боссу, что вы устранили утечку. Если он не хочет утечек в приложении, он явно не (хороший) программист. Я знаю, что это ложь, и я знаю, что найдутся программисты, которые меня возненавидят. Но на самом деле, прежде чем тратить часы или даже дни на поиск «лучшего» способа воспроизведения музыки (возможно, с другими побочными эффектами) вместо того, чтобы использовать то, что проверено и проверено в сотнях приложений для iPhone, такая ложь во спасение сэкономит вашему боссу кучу денег.
Я думаю, что слишком много людей считают, что утечка памяти приводит к частому сбою приложения. Это не так, если только утечки не являются значительными, что приводит к ошибкам нехватки памяти или в некоторых сценариях фрагментации памяти.
Комментарии:
1. Утечка, о которой идет речь, довольно существенная, 512 байт каждый раз, если я правильно помню. Мне никогда не удавалось точно выяснить, что вызывает это, но это также никогда не было проблемой, на решение которой стоило бы тратить слишком много времени. Кроме того, статический анализатор никогда не обнаруживал его, я видел его только в инструменте утечки. Короче говоря, я согласен с этим ответом, но я бы посоветовал объяснить вашему боссу, что утечка в коде, который вы не можете изменить, не создавая дополнительных проблем для себя.
2. Вы правы, если утечка настолько существенна и происходит у всех пользователей и каждый раз, об этом следует сообщать как об ошибке в CocosDenshion.