2014-09-11 2 views
15

Objc에서는 이미지 처리 후 CGImageRelease 방법을 사용합니다. 그러나 Swift에서는이 방법을 사용할 수 없습니다. Retaining and Releasing Images 후 애플 문서에 Swift의 CGImageRelease

왜 스위프트 거기 CGImageRelease 더 이상이다하는 2 Objective-C symbols hidden

내 질문은 무엇입니까? 그리고 그것을 대체 할 또 다른 방법을 부르겠습니까?

감사합니다.

답변

36

CGImage은 현재 ARC에서 관리합니다. CGImageRelease()은 더 이상 필요하지 않습니다. CGImage.h를보고이 매크로에 CF_IMPLICIT_BRIDGING_ENABLED이 포함되어 있음을 알면 알 수 있습니다. 이것은 Apple이 메모리 관리 명명 규칙을 따르도록이 파일을 감사했기 때문에 ARC가이 파일의 함수에서 반환 된 객체를 메모리 관리 할 수 ​​있음을 나타냅니다.


편집 : 나는 이것을 읽고 있었고 나는 오도 된 것을 깨달았다. 나는 ObjC에서 CGImageRelease이 필요 없다는 것을 의미하지는 않는다. (나는 여기서 암시 한 바가 많다.) 나는 단지 감사 때문에 Swift가 그것을 처리 할 수 ​​있다는 것을 의미한다. ObjC 코드에서 이러한 개체를 해제해야합니다.

+0

나는 의심 스럽다. ARC는 ObjC에서 피할 수있는 많은 제한 사항을 소개하지만 C에서는 매우 일반적입니다. 예를 들어 ARC 관리 요소를'struct'에 넣을 수는 없습니다. ARC 관리 요소를'void * '로 전달하는 것은 까다로운 일입니다. Apple의 초점은 Swift입니다. C를 향상시키는 데 많은 시간을 할애 할 것입니다. IMO는 Swift를 C에서 무엇을 하던지 대체 할 수 있도록 시간을 보냅니다. –

+0

왜 _CGImageRelease_가 더 이상 필요하지 않은지 _context.createCGImage_ – Hope

+0

@the를 사용할 때마다 메모리 사용량이 증가하고 있습니다. 귀하의 경우에 따라 다릅니다. 증상을 재현하는 코드와보고있는 내용에 대한 설명을 엽니 다. –