Objective c 初始化NSString时EXC\u访问错误
我想用长度为1的字符初始化一个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
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;iunichar
不是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发送消息时,由于后者,它会爆炸。)随机存储器地址。)