繁体   English   中英

发布CGColorSpaceRef时Iphone应用程序崩溃

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM