Xcode Static Analyzer сообщает об одной утечке в ARC - CFImageRef - как устранить - PullRequest
3 голосов
/ 09 января 2012

Из примерно 2 тыс. Строк кода у Static Analyzer есть только одна проблема:

spellDetailModalViewController  *detailVC = [[spellDetailModalViewController alloc]init];
UIImage *tempImage = self.spellImageView.image;
CGRect newSize = CGRectMake(0.0, 0.0, 320.0, 305.0);
CGImageRef temp = CGImageCreateWithImageInRect([tempImage CGImage], newSize);
UIImage *passingImage = [UIImage imageWithCGImage:temp];
temp=nil;

Жалуется, что CGImageRef 'temp' является "потенциально" утечкой и имеет счет сохранения.+1.Я установил его на ноль после того, как изображение было передано модальному ViewController.Очевидно, что в ARC я не могу назвать [temp release] в ARC.Не уверен, что делать.Помощь очень ценится.

Ответы [ 2 ]

4 голосов
/ 09 января 2012

Вам необходимо CGImageRelease temp

CGImageRef temp = CGImageCreateWithImageInRect([tempImage CGImage], newSize);
UIImage *passingImage = [UIImage imageWithCGImage:temp];
CGImageRelease(temp);

Из документов CGImageCreateWithImageInRect Apple:

Полученное изображение сохраняет ссылку на исходное изображение, что означает, что вы можетеотпустите исходное изображение после вызова этой функции.

0 голосов
/ 15 июля 2014

CGImage является объектом Core Graphics, и ARC не может обрабатывать основные библиотеки. Таким образом, вы должны использовать CGImageRelease или лучший способ передать это предупреждение, используйте метод imageWithCIImage как этот;

CIImage *fooImage = [CIImage imageWithCGImage:temp.CGImage];
UIImage *passingImage = [UIImage imageWithCIImage:fooImage];
...