2011-10-24 1 views
0

NSStringを長さ1の文字で初期化したいが、エラーが発生する。ここに私のコードです: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オブジェクトではありません、それは単一のUnicode文字のプリミティブCタイプ(または型定義)です。あなたは、このような(C-のような配列で複数の文字を取ることができます)NSStringのメソッドを呼び出す必要があります:

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

(コードのあなたの行に2つの問題があります:最初のあなたが渡していること最初の引数としてunicharの値を返します。ポインタの代わりに、-lengthをObjCオブジェクトでもポインタでもあるものにコールしようとしています。後者のために爆発しますランダムなメモリアドレスにメッセージを送信する)

関連する問題