释放 CGColorSpaceRef 时 Iphone 应用程序崩溃

标签 iphone objective-c xcode color-space

我正在使用 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/

相关文章:

iphone - iPhone上的警报 View

ios - 如何更改 iOS 系统警报的色调颜色?

iPhone应用程序占用内存

javascript - React-native XCode 构建失败 -> "Expected a type"(RTCNetworking.m)

iphone - 如何从已编译的 iOS 应用程序中解压缩/提取 *.nib 文件

xcode - 在Xcode中,有没有一种方法可以对方法的下拉列表进行排序

iphone - 关于 UIView 的 sizeThatFits 的问题

ios - 如何在锁屏通知中心显示之前拦截 iOS 推送通知?

ios - 带有 Segue 的 UISearchbar (UISearchResultsUpdating) 不会关闭

ios - 在Objective-C中构建和返回对象的这种方式的iOS名称