Почему это - сверхвыпуск CTFrame

Работа с некоторым CoreText кодирует на iOS, и я смущен относительно того, почему это - сверхвыпуск CTFrame. Я подтвердил, что это - сверхвыпуск, но я экранирован, потому что это создается с a create метод.

for (NSValue *value in [self frameArray]) {
  CGRect column = [value CGRectValue];
  CGMutablePathRef path = CGPathCreateMutable();
  CGPathAddRect(path, NULL, column);
  CTFrameRef frame = CTFramesetterCreateFrame(bodyFramesetter, CFRangeMake(position, 0), path, NULL);
  CTFrameDraw(frame, context);
  position += CTFrameGetVisibleStringRange(frame).length;
  CGPathRelease(path);
  // ???: Why does this cause an overrelease?
  //CFRelease(frame);
}

Обновление

Кодовая база 3.2, и катастрофический отказ не происходит на первом выпуске. Это происходит "случайным образом" в какой-то момент при рисовании представления. Этот цикл, как можно, вероятно, предположить, находится в -drawRect: из представления. В этом приложении нет никакой многопоточности.

7
задан Marcus S. Zarra 27 July 2010 в 01:30
поделиться

1 ответ

Оказывается, Джейсон был на правильном пути и проблема заключалась в передаче пустого установщика фреймов функции CTFramesetterCreateFrame , которая затем вернула NULL.

3
ответ дан 7 December 2019 в 16:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: