【发布时间】:2012-08-03 05:35:18
【问题描述】:
我有一个简单的方法,它接受一个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 被调用时,在frameRef 上自动调用retain。我不必担心在返回时释放frameRef,因为它存储在newFrameRef 中并且保留计数保持不变。我只需要担心释放newFrameRef (CTRelease(newFrameRef))。这是正确的吗?
更新:我实际上仍然从中得到内存泄漏,一个在返回行,一个在我释放“newFrameRef”的地方
【问题讨论】:
标签: iphone ios cocoa-touch core-graphics