다음 코드는 UIImage + Scale.h 범주로 있습니다.(iphone) 이미지에서 새 이미지를 만들 때 누출이 발생합니까?
-(UIImage*)scaleToSize:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[self drawInRect:CGRectMake(0, 0, size.width, size.height)];
// is this scaledImage auto-released?
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
나는 위에서 얻은 이미지를 사용하여 다음과 같이 사용합니다.
UIImage* image = [[UIImage alloc] initWithData: myData];
image = [image scaleToSize: size]; <- wouldn't this code create a leak since
image(before scaling) is lost somewhere?
위의 코드는 이미지가 자동 릴리스로 처음 생성 된 경우 올바르게 작동합니다.
그러나 'alloc'을 사용하여 이미지를 만든 경우 짧은 지식으로 누수가 발생합니다.
scaleToSize를 어떻게 변경해야합니까?이를 방지하려면?
감사합니다- 편집 -
나는 작은 지점에서 메모리에있는 UIImage의 #을 유지할 수 있도록있는 UIImage에/해제를 ALLOC를 사용 (또는 유지)하고 싶습니다 .
(루프에서 많은 UIImages를로드 중이며 기기에서 가져올 수 없음)
이미지를 수정할 때 대부분의 시간이 지나면 이미지 자체를 변경하고 새 이미지를 만들지 않기 때문에. scaleToSize :를 변경하려고했습니다. 나는 최근에 UIImage가 다소 큰 메모리 소비자이며 UIImage *의 메모리를 작게 유지하려고한다는 것을 깨달았다. 또는 최소한 autorelease 대신 alloc/release를 사용하십시오. – eugene
'UIImage'는 변경할 수 없습니다. 단순히 변경 만 할 수는 없습니다. 그리고 한 번에 많은 이미지를 생성하는 경우를 제외하면, autorelease 풀을 사용하면 수동으로'-release'를 많이 보내지 않을 것입니다. 나는'-autorelease' 대신'-release'를 사용하는 방법을 알려주기 위해이 글을 업데이트 할 것입니다. –
감사합니다. Bavarious, 예. 한 번에 많은 이미지를 만들고있어 메모리를 직접 처리하려고합니다. – eugene