[英]Iphone app crash when releasing CGColorSpaceRef
我正在使用CGColorSpaceRef
,当我发布它时,它崩溃了。 我创造它并释放的方式
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
完成一些任务后再发布
CGColorSpaceRelease(colorSpace);
编译器显示的错误是“断言失败:(!state-> is_singleton),函数color_space_state_dealloc,文件ColorSpaces / CGColorSpace.c,第127行”当我没有释放颜色空间或者只是将其设置为零时,奇怪的事情发生了,我不知道为什么会这样。 请帮帮我。 提前致谢。 度过快乐的一天。
看起来你已经过度释放了colorspace
对象。 我刚刚运行了以下程序,我收到了您引用的错误消息。
int main(int argc, char *argv[]) {
@autoreleasepool {
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGColorSpaceRelease(colorspace);
CGColorSpaceRelease(colorspace);
}
}
此SIGABRT
具有以下错误:
Assertion failed: (!state->is_singleton), function color_space_state_dealloc, file ColorSpaces/CGColorSpace.c, line 127.
如果程序编译并运行没有错误,我只调用CGColorSpaceRelease
。
静态分析仪(Shift-Cmd-B)可以很好地向您显示您出错了。 它肯定会在第二个CGColorSpaceRelease
调用上标记上面的代码“引用计数对象在它被释放后使用”。
如果/必要,您实际上负责保留和释放色彩空间! 即如果你需要,保留它。 如果您不需要保留,请不要发布! 有关此主题的更多信息,请参阅文档: Core Foundation的内存管理编程指南
更新:
关于有线错误我们的海报上面enecountered,看看ddopsons张贴在这里 。 不幸的是,没有提供解决方案,而是可能的解决方法。
您正试图释放一个恒定值。 不能这样做
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.