簡體   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