2009-12-17 7 views
3

내 앱에서 누출이 있습니다. 실제로 이해할 수 없지만 누구나 도와 줄 수 있습니까?0x0 메모리 누출 [iphone]

인스트루먼트 스택 트레이스 :

 0 libSystem.B.dylib calloc 
     1 WebCore CurrentThreadContext() 
     2 WebCore WKSetCurrentGraphicsContext 
     3 UIKit -[NSString(UIStringDrawing) drawAtPoint:forWidth:withFont:lineBreakMode:letterSpacing:includeEmoji:] 
     4 UIKit -[NSString(UIStringDrawing) drawAtPoint:forWidth:withFont:lineBreakMode:] 
     5 UIKit -[UILabel _drawTextInRect:baselineCalculationOnly:] 
     6 UIKit -[UILabel drawTextInRect:] 
     7 UIKit -[UILabel drawRect:] 
     8 UIKit -[UIView(CALayerDelegate) drawLayer:inContext:] 
     9 QuartzCore -[CALayer drawInContext:] 
     10 QuartzCore -[CALayer _display] 
     11 QuartzCore -[CALayer display] 
     12 QuartzCore CALayerDisplayIfNeeded 
     13 QuartzCore CA::Context::commit_transaction(CA::Transaction*) 
     14 QuartzCore CA::Transaction::commit() 
     15 QuartzCore CA::Transaction::release_thread(void*) 
     16 libSystem.B.dylib _pthread_tsd_cleanup 
     17 libSystem.B.dylib _pthread_exit 
     18 Foundation +[NSThread exit] 
     19 Foundation __NSThread__main__ 
     20 libSystem.B.dylib _pthread_body 
     21 TestApp 0x0 

답변

2

: \이 물리적 장치에있는 경우, 내가 손해를보고도있어 그것을 설명하는

? 예를 들어 메인 스레드가 아닌 UI 변경을 시도하는 경우와 같이 누출이 발생할 수 있습니다.

+0

메인 스레드가 아니라는 것을 어떻게 나타 냅니까? 내 그림의 대부분은보기 (윌/그랬어) 나타나는 방법에서 이루어집니다. 또는 스레드에서 채워진 UITableViewController. – Thys

+0

예를 들어, NSOperationQueue를 사용하는 경우. 모든 작업은 병렬 스레드에 있습니다. 나는 수술 중에 경보를 발령하려 할 때 기억이 새었다. – Morion

2

이 시뮬레이터 또는 물리적 장치에인가?

시뮬레이터에있는 경우 누출에 대해서는 실제 장치에 대해 을 테스트하십시오. 시뮬레이터에는 장치에없는 이상한 누출이있는 것으로 알려져 있습니다. 누수가 등장하기 전에 당신이 무엇을하고 있는지

+0

그것은이다 -.- – Thys

+0

당신이 비슷한에 대한 버그 보고서가 있는지 봤어 물리적 장치? 그렇지 않다면 나는 그것을보고 할 것이다. 이것은 응용 프로그램으로 인해 발생하는 것으로 보이지 않습니다. –

0

웹킷 내부에 누수가있는 것처럼 보입니다 ... 애플과 함께 보고서를 제출하는 것 외에는별로 할 수 없습니다.

0

나는 모리언이 옳다고 생각한다. 주 스레드가 아닌 다른 스레드에서 UI를 사용하여 작업하지 마십시오. 우연히 이런 일을 할 때 우스운 일들이 일어났습니다.

당신은 말했다 :

내 그림의 대부분은 (DID/것이다) 방법을 표시되는 뷰에서 수행된다. 또는 스레드에서 채워진 UITableViewController.

그래서 컨트롤러는 다른 스레드에 의해 채워지므로이 도면은이 "다른"스레드에서도 실행됩니다. performSelectorOnMainThread:withObject:waitUntilDone:

여기를보세요 사용해보십시오 : Reference Documentation