2010-08-23 7 views
0

코어 텍스트 API의 CTFrameGetLines (frameRef) 메소드에 이상한 문제가 있습니다. 함수를 사용하여 프레임에있는 모든 CTLines의 배열을 얻고 있습니다.CTLine Ref nil + CoreText + iPhone

CFArrayRef lines = CTFrameGetLines(frameRef); 

다음으로 계산하고 있습니다. 내 경우 linesCount에서

linesCount = CFArrayGetCount (lines); 

를 사용하여 존재하는 라인은 28 일 오는하지만 라인 배열의 인덱스 17 선을 얻을하려고 할 때이 전무와 같은 라인을 얻고있다

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

을 사용하고 있습니다. linesCount의 값이 28이 될 때를 알 수 없습니다. 그러면 라인 배열의 17 번째 인덱스에서 값이 0이됩니다. 인덱스 17에 일부 라인이 있어야합니다.

친절하게 도와주세요. 이 문제를 해결하기 위해서는 이것이 매우 시급합니다. 사전, 감사에서

고맙습니다, tek3

답변

1

objectAtIndex는 : 수신기가 전무가 아니면 전무를 반환해서는 안됩니다. 그건 'lines'이 NULL이라는 뜻입니다. CTFrameGetLines에 대한 호출이 실패했을 수 있습니다. CFArrayGetCount가 28을 반환하는 이유는 설명하지 않습니다. 매번 28 번이나 돌아 옵니까? CFArrayGetValueAtIndex는 무엇을 반환합니까?

앤드류

0

(CTLineRef) CFArrayGetValueAtIndex (선, I);

NSArray를 사용하는 대신 이러한

라인 = (CTLineRef) (있는 NSArray *) 라인 objectAtIndex : I];

그리고 전에 해안선을 해제하지 마십시오.