CTLine Ref即将推出+ CoreText + iPhone

时间:2010-08-23 10:26:41

标签: iphone core-text

我面临着Core Text API的CTFrameGetLines(frameRef)方法的一个奇怪问题。我正在使用函数

获取帧中存在的所有CTLine的数组
CFArrayRef lines =   CTFrameGetLines( frameRef );

然后我在计算否。使用

出现的行数
    linesCount = CFArrayGetCount (lines);

在我的情况下,linesCount将变为28.但是当我尝试使用

在行数组中获取第17行的行时
line = (CTLineRef) [(NSArray *)lines objectAtIndex:i];

我的排名为零。我无法弄清楚linesCount的值何时变为28,那么为什么行数组中第17个索引的值为零。在索引17处需要存在一些行。

请帮我解决这个问题,这真的很紧急。

Thanx提前, 问候, tek3

2 个答案:

答案 0 :(得分:1)

objectAtIndex:除非接收方为零,否则永远不应返回nil。这意味着'lines'为NULL。也许对CTFrameGetLines的调用失败了。这并不能解释为什么CFArrayGetCount会返回28。每次都返回28吗? CFArrayGetValueAtIndex返回什么?

安德鲁

答案 1 :(得分:0)

(CTLineRef)CFArrayGetValueAtIndex(线,I);

使用此代替NSArray

line =(CTLineRef)[(NSArray *)lines objectAtIndex:i];

并告诉你不要在之前释放行。