我有一個簡單方法,該方法從它接受一個CTFramesetterRef
對象並建立一個CTTextFrameRef
如下:CoreGraphics在管理內存/ CoreText與返回值
- (CTFrameRef) createFrameRefWithFramesetterRef:(CTFramesetterRef)framesetterRef
{
CTFrameRef frameRef = CTFramesetterCreateFrame(framesetterRef, CFRangeMake(0, 0), self.mutablePathRef, NULL);
return frameRef;
}
然後,在另一種方法中我進行呼叫上述方法:
- (void) someMethod
{
CTFramesetterRef framesetterRef = CTFramesetterCreateWithAttributedString((CFMutableAttributedStringRef)self.text);
CTFrameRef newFrameRef = [self createFrameRefWithFramesetterRef:framesetterRef];
//do some stuff
CTRelease(newFrameRef);
CTRelease(framesetterRef);
}
我只是想確認我管理的內存正確這裏我是新來與CoreGraphics
工作。當調用CTFramesetterCreateFrame
時,會自動調用保留frameRef
。自從它存儲在newFrameRef
中並且保留計數保持不變時,我不必擔心釋放frameRef
。我不得不擔心的是釋放newFrameRef
(CTRelease(newFrameRef)
)。它是否正確?
更新:我其實仍然得到來自該內存泄漏,一個在與回線和一個在那裏我釋放「newFrameRef」
忘記釋放CTFramesetterRef只是我的一個疏忽,我改變了這一點。再次感謝! – 2012-08-03 05:59:38
沒問題。無論如何,目標c的c部分記錄很差。 – CodaFi 2012-08-03 06:15:13