Я недавно обновил свой проект до iOS 5 с ARC (автоматический подсчет ссылок), и теперь Instruments сообщает об утечке памяти из NSAutoreleasePool после того, как приложение приостановлено в фоновом режиме.
Я подозреваю, что утечка вызвана Flurry Analytics на основе трассировки стека с этими двумя вызовами API:
+[FlurrySession sendSessionsToServerForSessionPause]
+[FlurrySession sendSessionsToServerWithTimeout:useWebView:requestAppCircleAds:requestVideoAds:requestAppSpotAds:sendCurrentSession:]
Я не делаю никаких вызовов Flurry API при приостановке. Единственный звонок, который нужно сделать, - это
[FlurryAnalytics startSession:<my id>];
при первом запуске приложения.
Заявленная утечка
Leaked Object # Address Size Responsible Library Responsible Frame
NSAutoreleasePool,1 0x7693f600 32 Bytes Foundation +[NSAutoreleasePool allocWithZone:]
Трассировка стека
10 libsystem_c.dylib thread_start
9 libsystem_c.dylib _pthread_start
8 Foundation __NSThread__main__
7 Foundation -[NSThread main]
6 iSURVEY +[FlurrySession sendSessionsToServerForSessionPause] /Developer/Applications/iPhoneAdAgent_modular/Classes/FlurrySession.m:931
5 iSURVEY +[FlurrySession sendSessionsToServerWithTimeout:useWebView:requestAppCircleAds:requestVideoAds:requestAppSpotAds:sendCurrentSession:] /Developer/Applications/iPhoneAdAgent_modular/Classes/FlurrySession.m:962
4 CoreFoundation +[NSObject(NSObject) alloc]
3 Foundation +[NSAutoreleasePool allocWithZone:]
2 CoreFoundation +[NSObject(NSObject) allocWithZone:]
1 libobjc.A.dylib class_createInstance
0 libsystem_c.dylib calloc
Edit:
Я только что попытался отключить все переменные отладки, такие как зомби, и утечка памяти все та же.
Редактировать 2:
Хорошо, я подтвердил, что это определенно проблема Flurry. После снятия звонка
[FlurryAnalytics startSession:<my id>];
У меня больше нет утечки памяти.
Я сообщу об ошибке команде Flurry.