And*_*rew 4 iphone core-graphics objective-c drawrect ios
我刚开始发布核心图形,所以我可能需要一些帮助.
我的代码看起来像这样:
UIImage *buttonImage() {
UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
CGColorSpaceRef baseSpace = CGColorSpaceCreateDeviceRGB();
CGMutablePathRef outerPath;
CGMutablePathRef midPath;
CGMutablePathRef innerPath;
CGMutablePathRef highlightPath;
//Some button stuff
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGContextRelease(context);
return image;
}
Run Code Online (Sandbox Code Playgroud)
那个释放线,我已经放入了.虽然我收到了错误:
context_reclaim: invalid context
context_finalize: invalid context
Run Code Online (Sandbox Code Playgroud)
关于我应该在这个实例中放置版本的任何想法?
CGContextRelease(context)如果您之前已经完成了a CFRetain(context)或a CGContextRetain(context),或者您自己创建了上下文,则只需要执行此操作.在您的示例中,您正在调用UIGraphicsBeginImageContextWithOptions(),它正在为您创建上下文,因此,调用CGContextRelease()自己会过度释放它.
你需要平衡CGColorSpaceCreateDeviceRGB()与a:
CGColorSpaceRelease(baseSpace)
Run Code Online (Sandbox Code Playgroud)
或者:
if (baseSpace) CFRelease(baseSpace)
Run Code Online (Sandbox Code Playgroud)
使用时不拥有上下文UIGraphicsGetCurrentContext.因此你不应该释放它.如果你要使用CGContextRetain()那么你会释放.有关这方面的更多信息,请访问:
我强烈建议您阅读Memory Management编程指南,以了解它的工作原理.