나는 여러 가지 방법을 통과하고있어 (이 CG 객체이기 때문에, 나는 그것이 오토 릴리즈를 지원하지 않는 가정) CGImageRef와 적절한 메모리 관리를 수행하고있어 만약 내가 궁금 하군요. 비 NSObject를 사용한 메모리 관리와 다른 NSObject와의 상호 작용은 아직 다소 새로운 것입니다. 내가 뭘하는지 여기해제의 CGImage (CGImageRef)
:
내가 CGBitmapContextCreateImage 내 이미지 캐시 관리자 (계수 1을 유지) 내부의 CGImageRef를 생성하고, NSMutableDictionary (계수 2를 유지)에 추가하고있다. CALayers 이미지를 사용할 때
, 난 층을 제거하기 전에 = 무기 호 (카운트 -1 유지) layer.contents (+1 카운트를 유지)를 할당하고, layer.contents와 내용을 클리어. 텍스처를 삭제하면
마지막으로, 나는 전화 CGImageRefRelease와 [NSMutableDictionary removeObject]
이 그렇게 할 수있는 적절한 방법입니다 0으로 카운트를 유지해야 하는가? 당신이 설명
링크를 제공해 주셔서 감사합니다. 훌륭한 리소스가 많은 것을 분명히합니다. 문서 도구는 이미지가 NULL 인 경우 CGImageRelease 그렇게 함께 갈 안전한 소리, 오류가 발생하지 않습니다 언급했다. removeObject : forKey :, 예, 그 중 하나입니다. – Rudi
** 링크 한 문서가 귀하의 주장을 뒷받침하지 않습니다 ** 일부 핵심 재단 객체는 Cocoa 클래스에 "수신자 부담 브리지"이지만 모든 것이 아닙니다. 'CFStringRef'를'NSString *'으로 캐스팅 할 수는 있지만'CGImageRef'와'UIImage'로는 할 수 없습니다. – benzado
필자의 주장은 CF 객체가'release'와'autorelease'를 지원한다는 것입니다. 이 문서는 명시 적으로 다음과 같이 명시하고 있습니다 : "예제에서 메모리 관리 함수와 메소드는 상호 교환 가능합니다. 여러분은 Cocoa 객체로'CFRelease'를 사용하고 Core Foundation 객체로'release'와'autorelease'를 사용할 수 있습니다." 의 CGImage 참조가의 CGImage가 CFType에서 내려 것을 말한다. http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Reference/CGImage/는 –