2012-01-31 5 views
1

CFRelease 실행하지만하지 않음); 메모리 부족 경고가 표시되고 결국 앱이 종료됩니다 (기기에서 실행 중일 때). 내가 그것을 사용하는 경우은 밖으로 좀비 그것은이 코드에서

내가 얻을 :

- [아니 유형 _cfTypeID] : 악기 쇼에서 좀비와 할당이 해제 된 경우

및 프로파일에 보낸 메시지 [있는 UIImage의 dealloc] -1 refcnt와 바로 위에있는 줄은 CFRelease에 위의 클래스에서 refcnt가 0 인 것을 보여줍니다. 표시된 CFRelease가 클래스에있는 유일한 것입니다.

...없이 ... 보는 건 '나를 미치게 살 수 없다, 그것으로

어떤 아이디어를 살 수 있습니까?

답변

4

기분을 상하게하는 라인은 다음과 같습니다 defaultRepresentation.fullResolutionImage은 반환의 CGImage의 유지 수를 증가시키지 않기 때문에

CGImageRelease(inImage); 

이 필요하지 않아야합니다.

또한 [url release]은 같은 이유로 필요하지 않습니다.

+1

나는 [url release]를 꺼냈다. 하지만 CGImageRelease()를 사용하면 여전히 할당 해제 된 인스턴스에 대한 호출에 대한 메시지가 표시됩니다. 밖으로 CGImageRelease 나가 ​​기억 경고를 얻고는 것이 죽는다. 어떤 아이디어. – user953175

+0

현재 코드의 현재 버전에는 [url release]가없고 cgimagerelease도 없습니다. 이제 코드는 t.asset.defaultRepresentation.fullResolutionImage를 CGDestinationAddImage에 직접 전달합니다. 이제 탈퇴 된 인스턴스에 메시지를받지 못했지만 좀비가 꺼진 상태에서 세그먼트 오류 11이 발생했습니다. – user953175

0
url = [NSURL fileURLWithPath:t.exportedFullName]; 

는 나중에

[url release]; 

는 이제 나쁜입니다. 당신은 -alloc/-init, -copy, -mutableCopy도 아니다 -url를 소유하지 않기 때문에 소유하지 않는다. 즉, NSURL 인스턴스의 과다 릴리스가 발생합니다. 그래서, 아마도 CGImageRef가 메모리에서 그 자리를 차지하는 경우 일 것입니다 ...

해당 릴리스와 CFRelease() 함수 호출도 제거하십시오. 같은 이유로, 불필요합니다.

+0

나는 [url release]를 꺼냈다. 하지만 CGImageRelease()를 사용하면 여전히 할당 해제 된 인스턴스에 대한 호출에 대한 메시지가 표시됩니다. 밖으로 CGImageRelease 나가 ​​기억 경고를 얻고는 것이 죽는다. 어떤 아이디어. – user953175

+0

죄송합니다. 코드를 잘못 읽었습니다. 당신도 그걸 필요가 없습니다. –

+0

현재 코드의 현재 버전에는 [url release]가없고 cgimagerelease가 없습니다. 이제 코드는 t.asset.defaultRepresentation.fullResolutionImage를 CGDestinationAddImage에 직접 전달합니다. 이제 탈퇴 된 인스턴스에 메시지를받지 못했지만 좀비가 꺼진 상태에서 세그먼트 오류 11이 발생했습니다. – user953175