EXC_BAD_ACCESS при инициализации строки NSString - PullRequest
0 голосов
/ 24 октября 2011

Я хочу инициализировать NSString символом длиной 1, но получаю ошибку.Вот мой код:

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]];

    }

1 Ответ

4 голосов
/ 24 октября 2011

unichar это не объект ObjC, это примитивный тип C (или typedef) для одного символа юникода.Вам нужно вызвать метод NSString (который может принимать несколько символов в C-подобном массиве) следующим образом:

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

(в вашей строке кода есть две проблемы: во-первых, вы 'передается значение unichar в качестве первого аргумента вместо указателя на него и второго, который вы пытаетесь вызвать -length для чего-то, что не является объектом ObjC или даже указателем.из-за последнего, когда он пытается отправить сообщение на некоторый случайный адрес памяти.)

...