Objective c CGImageCreateWithImageInRect静态分析警告
我拥有UIImage类别的以下功能部分:Objective c CGImageCreateWithImageInRect静态分析警告,objective-c,ios,uiimage,cgimage,cgimageref,Objective C,Ios,Uiimage,Cgimage,Cgimageref,我拥有UIImage类别的以下功能部分: - (UIImage *)copyImageAtRect:(CGRect)rect { CGImageRef imageToSplit = self.CGImage; CGImageRef partOfImageAsCG = CGImageCreateWithImageInRect(imageToSplit, rect); UIImage *image = [UIImage imageWithCGImage:partOfImageAsCG]; CGIma
- (UIImage *)copyImageAtRect:(CGRect)rect {
CGImageRef imageToSplit = self.CGImage;
CGImageRef partOfImageAsCG = CGImageCreateWithImageInRect(imageToSplit, rect);
UIImage *image = [UIImage imageWithCGImage:partOfImageAsCG];
CGImageRelease(partOfImageAsCG);
return image;}
但是,当我分析代码时,我得到以下静态分析警告:
“将保留计数为+0的对象返回给预期为+1(拥有)保留计数的调用方”,并突出显示返回图像行
我尝试过改变很多事情,但似乎不明白为什么这会成为一个潜在的漏洞
非常感谢您的帮助
非常感谢
编辑
正如waldrumpus指出的,问题在于我的函数名。它包含了“copy”这个词,编译器正是从这个词中提取出来的。通过重命名函数修复了此问题。谢谢waldrumpus。因为方法的名称以单词
copy…
开头,编译器按照惯例假定它将返回对象的保留副本。这与以copy…
或init…
开头的方法名有关
将该方法重命名为其他方法,警告应该消失。可能是因为方法的名称以
copy…
开头,使编译器希望保留对象吗?尝试更改方法名称,看看这是否会使警告消失。谢谢waldrumpus,这解决了问题。好地方。如果是这样的话,我已经冒昧地重新发布了答案。