
@implementation NScolor (Mycategory)- (CGcolorRef)CGcolor{ NScolor *colorRGB = [self colorUsingcolorSpacename:NSCalibratedRGBcolorSpace]; CGfloat components[4]; [colorRGB getRed:&components[0] green:&components[1] blue:&components[2] Alpha:&components[3]]; CGcolorSpaceRef space = CGcolorSpaceCreateWithname(kCGcolorSpaceGenericRGB); CGcolorRef thecolor = CGcolorCreate(space,components); CGcolorSpaceRelease(space); return (CGcolorRef)[(ID)thecolor autorelease];}@end 使用ARC的正确方法是什么?我不想返回一个保留的CGcolor.
XCode中的ARC转换器建议使用
return (CGcolorRef)[(__brIDge ID)thecolor autorelease];
但是会导致以下错误消息:
解决方法@H_419_33@ CGcolor是Core Foundation对象.您不应该尝试使用自动释放.相反,您应该重命名您的方法copyCGcolor并返回一个保留的对象.[rewriter] it is not safe to cast to ‘CGcolorRef’ the result of
‘autorelease’ message; a __brIDge cast may result in a pointer to a
destroyed object and a __brIDge_retained may leak the object
自动发布是一个Objective-C概念.核心基金会不存在.
由于CGcolor没有免费连接到任何Objective-C类,尝试自动释放它是非常奇怪的(即使这可能工作).
几年后更新
现在,CoreFoundation级别有CFautorelease()(可从Mavericks和iOS 7获得).
总结以上是内存溢出为你收集整理的objective-c – 将自动释放的CGColor返回给ARC的转换方法全部内容,希望文章能够帮你解决objective-c – 将自动释放的CGColor返回给ARC的转换方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)