オブジェクトを取り込んで、そこから次のよう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」をリリースしています。