3

플레이 계산합니다,하지만 난 그것을 ARC와 함께 작동하고 문제가 좀있어이 켜져 디스플레이 링크 콜백 함수 그래서 콜백에 내 self을 사용할 수CVDisplayLink + 자동 참조 나는 최근에 내 OpenGL을 애니메이션을 다시 그릴 CVDisplayLink에 NSTimer를 사용하는 스위치도 함께

// set the renderer output callback function 
CVDisplayLinkSetOutputCallback(displayLink, &displayLinkCallback, (__bridge void*)self); 

위한 파라미터로서 사용되는, C에 기록되어야하지만 ((__bridge BDOpenGLView*) displayLinkContext)를 사용하여, 메모리 누출이 생성

,
objc[29390]: Object 0x1001b01f0 of class NSConcreteMapTable autoreleased with no pool in place - just leaking - break on objc_autoreleaseNoPool() to debug 

나는 NSAutoreleasePool 자신을 설정해야하지만, ARC 스위치를 켜면 안된다.

내가 뭔가를 잃어버린거야?

답변

6

서라운드 새로운 @autoreleasepool 블록 코드 :

@autoreleasepool { 
    // your c callback code here 
} 
+0

은 지금 바보가 된 기분 : D 감사합니다 :) – cargath

+0

내가 한 달 전에 아크를 통해 일부 GC 코드를 마이그레이션 한이 똑같은 일을했다. 나는 블록에 익숙해졌으며 [그들은 자동적 인 자동 풀을 필요로하지 않는다는 사실] (http://stackoverflow.com/questions/4141123/do-you-need-to-create-an-nsautoreleasepool-within-a -block-in-gcd) CVDisplayLink가 콜백과 함께 사용하는 배경 스레드를 만드는 것을 잊어 버렸습니다. –