ios – 如果需要返回它,如何发布CGImageRef?

ios – 如果需要返回它,如何发布CGImageRef?,第1张

概述我有一个方法来调整CG ImageRef的大小并返回CGImageRef.问题是最后几行,我需要以某种方式释放,但之后返回.有任何想法吗?谢谢 -(CGImageRef)resizeImage:(CGImageRef *)anImage width:(CGFloat)width height:(CGFloat)height{ CGImageRef imageRef = *anImage 我有一个方法来调整CG ImageRef的大小并返回CGImageRef.问题是最后几行,我需要以某种方式释放,但之后返回.有任何想法吗?谢谢

-(CGImageRef)resizeImage:(CGImageRef *)anImage wIDth:(CGfloat)wIDth height:(CGfloat)height{    CGImageRef imageRef = *anImage;    CGImageAlphaInfo AlphaInfo = CGImageGetAlphaInfo(imageRef);    if (AlphaInfo == kCGImageAlphaNone)        AlphaInfo = kCGImageAlphaNoneskipLast;    CGContextRef bitmap = CGBitmapContextCreate(NulL,wIDth,height,CGImageGetBitsPerComponent(imageRef),4 * wIDth,CGImageGetcolorSpace(imageRef),AlphaInfo);    CGContextDrawImage(bitmap,CGRectMake(0,height),imageRef);    CGImageRef ref = CGBitmapContextCreateImage(bitmap);    CGContextRelease(bitmap);    CGImageRelease(ref); //issue here    return ref;}
解决方法 Cocoa内存管理命名策略声明,您拥有一个对象,该对象是从名称以alloc,copy或new开头的方法创建的.
Clang静态分析仪也遵守此规则.

请注意,Core Foundation的约定略有不同.详细信息可在Apple’s Advanced Memory Management Programming Guide找到.

我修改了上面的方法以符合命名约定.我在传入anImage时也删除了星号,因为CGImageRef已经是一个指针. (或者这是故意的吗?).
请注意,您拥有返回的CGImage,并且以后必须CGImageRelease它.

-(CGImageRef)newResizedImageWithImage:(CGImageRef)anImage wIDth:(CGfloat)wIDth height:(CGfloat)height{    CGImageAlphaInfo AlphaInfo = CGImageGetAlphaInfo(anImage);    if (AlphaInfo == kCGImageAlphaNone)    {        AlphaInfo = kCGImageAlphaNoneskipLast;    }    CGContextRef bitmap = CGBitmapContextCreate(NulL,CGImageGetBitsPerComponent(anImage),CGImageGetcolorSpace(anImage),AlphaInfo);    CGContextDrawImage(bitmap,anImage);    CGImageRef image = CGBitmapContextCreateImage(bitmap);    CGContextRelease(bitmap);    return image;}
总结

以上是内存溢出为你收集整理的ios – 如果需要返回它,如何发布CGImageRef?全部内容,希望文章能够帮你解决ios – 如果需要返回它,如何发布CGImageRef?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1002113.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存