我有一个简单的方法,它接受一个CTFramesetterRef
对象并从中构建一个CTTextFrameRef
,如下所示:
- (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
被调用时,retain 会自动被调用frameRef
。我不必担心frameRef
在返回时释放它,因为它存储在newFrameRef
其中并且保留计数保持不变。我只需要担心释放newFrameRef
( CTRelease(newFrameRef)
)。它是否正确?
更新:我实际上仍然因此而发生内存泄漏,一个在返回线处,另一个在我发布“newFrameRef”的地方