我面临着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
答案 0 :(得分:1)
objectAtIndex:除非接收方为零,否则永远不应返回nil。这意味着'lines'为NULL。也许对CTFrameGetLines的调用失败了。这并不能解释为什么CFArrayGetCount会返回28。每次都返回28吗? CFArrayGetValueAtIndex返回什么?
安德鲁
答案 1 :(得分:0)
(CTLineRef)CFArrayGetValueAtIndex(线,I);
使用此代替NSArray
line =(CTLineRef)[(NSArray *)lines objectAtIndex:i];
并告诉你不要在之前释放行。