[英]Why do I have a memory leak in UIApplication
我有一個iPhone應用程序項目。 我使用儀器內存泄漏工具對其進行了分析。 根據儀器,我有2次泄漏,跟蹤如下:
start main UIAplicationMain _run CFRunLoopInMode CFRunLoopRunSpecific PurpleEventCallback _UIAplicationHandleEvent sendEvent: handleEvent:withNewEvent:
在此跟蹤之后,有兩個單獨的跟蹤。 是什么原因造成的,我該如何解決?
編輯:根據儀器,泄漏在第二行
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil); //leak
[pool release];
return retVal;
您是否缺少線程的NSAutoReleasePool
?
第二種方法看起來像是由另一個組件或系統線程調用的某種回調。
在實現中,在頂部創建一個NSAutoReleasePool
,並在方法完成NSAutoReleasePool
其釋放:
void MyCallback {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// do stuff
[pool release];
}
這可能是一個誤報。 UIApplicationMain可能會創建一些對象,這些對象打算在應用程序存在時一直存在,因此永遠不會費心釋放它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.