我正在使用 CGColorSpaceRef
,当我释放它时,它崩溃了。
我创建和发布它的方式
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
完成一些任务后释放
CGColorSpaceRelease(colorSpace);
编译器显示的错误是 “断言失败:(!state->is_singleton),函数 color_space_state_dealloc,文件 ColorSpaces/CGColorSpace.c,第 127 行” 当我不释放色彩空间或只是将其设置为 nil 时,会发生奇怪的事情,我不知道为什么会这样。 请帮我解决这个问题。提前致谢。 祝你有愉快的一天。
最佳答案
看起来您过度释放了 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
调用时用“引用计数对象在释放后使用”标记上面的代码。
关于释放 CGColorSpaceRef 时 Iphone 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12295901/