オブジェクトを取り込んで、そこから次のよう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))だけです。これは正しいです?
更新:実際には、これからまだメモリリークが発生しています。1つはリターンの行で、もう1つは「newFrameRef」をリリースしています。