2011-10-24 5 views
0

길이가 1 인 문자로 NSString을 초기화하고 싶지만 오류가 발생합니다. 여기에 내 코드입니다 :NSString을 초기화 할 때 EXC_BAD_ACCESS

for(int i=0;i<[word length];i++) 
    { 

     letterMap = [self stringToAscii:[word substringWithRange:NSMakeRange(i, 1) ]]; 
     NSInteger codec = (letterMap + shifter) % 26; 
     unichar ch = [self asciiToString:codec]; 

     NSString * codedLetter = [NSString stringWithCharacters:ch length:[ch length]]; 

    } 

답변

4

unichar이 ObjC의 대상이 아닌, 단일 유니 코드 문자의 기본 C 타입 (또는 형식 정의)입니다. 이 같은 (A C와 같은 배열에 여러 문자를 취할 수 있음)는 NSString의 메소드를 호출해야합니다

NSString * codedLetter = [NSString stringWithCharacters:&ch length:1]; 

(코드 당신의 라인에 두 가지 문제가 있습니다 : 먼저 전달하는 것을 unichar의 값을 포인터 대신 첫 번째 인수로 사용하고 두 번째 포인터는 ObjC 객체가 아닌 포인터 또는 심지어 포인터로 -length을 호출하려고 시도하는 것입니다. 후자가 시도 할 때 임의의 메모리 주소로 메시지를 보냅니다.)

관련 문제