我創建一個位圖背景下,在我的代碼中有這樣的:該方法返回的CGContextRef對象如何發佈?
bitmapData = malloc(bitmapByteCount);
context = CGBitmapContextCreate (bitmapData,
pixelsWidth,
pixelsHeight,
8, // bits per component
bitmapBytesPerRow,
colorSpace,
kCGImageAlphaPremultipliedFirst);
之前,我想我必須釋放位圖數據。在返回context
之前,我可以安全地撥打free(bitmapData)
嗎?
難道這不是真的嗎?如果方法名稱中有「創建」,則必須自動釋放它,以便接收方不必擔心內存管理。只有在方法名稱或「alloc」中爲「新」時,您才必須手動釋放。至少這是我學到了什麼;) – openfrog 2010-09-23 09:36:49
這個問題:http://stackoverflow.com/questions/870243/releasing-core-foundation-object-references解釋關於核心基礎釋放對象的幾件事情。 Core Foundation沒有autorelease的概念。 – Jasarien 2010-09-23 11:06:39
從這個問題的答案中我鏈接到:「由於在Core Foundation中沒有autorelease等價物,如果你從方法返回一個引用,返回數組而不釋放它,你應該(除非你是邪惡的),那麼在方法名中包含「create」以向調用者指示他們現在擁有對返回對象的引用。「 – Jasarien 2010-09-23 11:08:41