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