1

アプリでCoreTextを使用していますが、非常に大きなリークがありますが、なぜそれが起こるのかわかりません. だからここに私のコードのスニペットがあります:

 _framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)_mAttributedString);

CFDictionaryRef frameOptionsDictionary = (CFDictionaryRef)[self frameOptionsDictionary];

_frame = CTFramesetterCreateFrame(_framesetter,
                                CFRangeMake(0, _mAttributedString.length),
                                path,
                                frameOptionsDictionary);

CFRelease(_framesetter), _framesetter = NULL;

ご覧のとおり、私は CTFramesetter をリリースしています... しかし、アプリのリークがあり、計測器は CTFramesetter が原因であることを示しています。では、どのように解放すればよいのでしょうか。

4

1 に答える 1

0

0) 障害がないことを確認します。

assert(_mAttributedString);
assert(0 == _framesetter);
_framesetter = CTFramesetterCreateWithAttributedString(
                             (CFAttributedStringRef)_mAttributedString);

CFDictionaryRef frameOptionsDictionary =
                   (CFDictionaryRef)[self frameOptionsDictionary];

assert(path);
assert(0 == _frame);
_frame = CTFramesetterCreateFrame(_framesetter,
                                CFRangeMake(0, _mAttributedString.length),
                                path,
                                frameOptionsDictionary);

CFRelease(_framesetter), _framesetter = NULL;
于 2012-08-16T04:37:32.683 に答える