Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 初始化NSString时EXC\u访问错误_Objective C_Cocoa_Nsstring_Exc Bad Access - Fatal编程技术网

Objective c 初始化NSString时EXC\u访问错误

Objective c 初始化NSString时EXC\u访问错误,objective-c,cocoa,nsstring,exc-bad-access,Objective C,Cocoa,Nsstring,Exc Bad Access,我想用长度为1的字符初始化一个NSString,但出现了一个错误。这是我的密码: for(int i=0;i<[word length];i++) { letterMap = [self stringToAscii:[word substringWithRange:NSMakeRange(i, 1) ]]; NSInteger codec = (letterMap + shifter) % 26; unichar ch = [sel

我想用长度为1的字符初始化一个
NSString
,但出现了一个错误。这是我的密码:

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

    }

for(int i=0;i
unichar
不是ObjC对象,它是单个unicode字符的基本C类型(或typedef)。您需要调用NSString方法(可以在类C数组中使用多个字符),如下所示:

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


(代码行中有两个问题:第一个问题是传递
unichar
的值作为第一个参数,而不是指向它的指针;第二个问题是,您试图调用的
-length
不是ObjC对象,甚至不是指针。当它试图向so发送消息时,由于后者,它会爆炸。)me随机内存地址。)

unichar
不是ObjC对象,它是单个unicode字符的基本C类型(或typedef)。您需要调用NSString方法(它可以在类似C的数组中包含多个字符),如下所示:

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

(代码行中有两个问题:第一个问题是传递
unichar
的值作为第一个参数,而不是指向它的指针;第二个问题是,您试图调用的
-length
不是ObjC对象,甚至不是指针。当它试图向so发送消息时,由于后者,它会爆炸。)随机存储器地址。)