2011-11-07 3 views
4

Мое приложение рушится с помощью iOS5 и iOS4.3 iPhone-симуляторов в Xcode 4.2, трассировка стека показывает сигнал BAD_ACCESS в методе [FlurryAPI stopBackgroundTask].Flurry API crashing iPhone simulator

В то время как в iOS4.3 симулятор приложение только сбой при отправке приложения на задний план, в iOS5 всегда сбой. Я добавляю изображение навигатора отладки, показывающего поток, в котором происходит BAD_ACCESS.

С другой стороны, приложение работает нормально с использованием реального устройства.

Любые идеи о том, как я могу получить больше информации о том, что происходит и почему это происходит?

enter image description here

+1

Получение точной же информации после обновления до последней версии Flurry lib (и замена моих старых вызовов FlurryAPI с помощью FlurryAnalytics ...) – avocade

+1

Это то, что происходит в потоке, создаваемом Flurry для его агента при выполнении [FlurryAnalytics startSession: FLURRYAPIKEY] в нашем коде. Все еще не знаю, как проверить, откуда происходит вызов, который вызывает проблему. – yeforriak

+0

Такая же проблема здесь, не удалось найти исправление. Я обновился до Flurry 3.0.4 и все еще получаю проблему в Simulator, как 4.3, так и 5.0. – DaGaMs

ответ

7

Я работал вокруг этого вопроса, добавив следующее didFinishLaunchingWithOptions

#if TARGET_IPHONE_SIMULATOR 
     [FlurryAnalytics setSessionReportsOnPauseEnabled:NO]; 
#endif 
+0

Спасибо, человек! Это сработало для меня. – ruyamonis346

1

Похоже, у вас есть зомби - у вас есть ситуация, когда вы используете код после того, как вы выпустили его. Счет сохранения достигает нуля, поэтому система отменяет и повторно использует память, затем вы делаете изменение через исходную ссылку. Теперь у вас есть две разные ссылки на одну и ту же память, каждая из которых ожидает другого объекта. В вашем случае одна из ссылок находится в шквал.

Причина разницы в устройствах и симуляторах - это разные схемы распределения памяти, используемые двумя архитектурами - похоже, симулятор очень агрессивно использует память.

Включите NSZombie и запустите в отладчике. Если вам повезет, это даст вам объект и точку, которую он использует после освобождения.

Включить NSZombie: меню «Product», «Edit Scheme ...» «Run», вкладка «Diagnostics», отметьте «Enable Zombie Objects».

+0

Спасибо за ответ, но позволяю NSZombies не дает мне дополнительной информации :( – yeforriak

2

Flurry аналитика не работает, кроме основного Thread. Это может привести к сбою в фоновом потоке.