我是Objective-C的新手,作为一个非常简单的学习练习,我创建了一个方法来返回存储名称的变量的第一个首字母:
-(NSString *)initial
{
return [_name substringToIndex:1];
}
当我使用substringToIndex时,这完全符合预期,但是如果我改为使用characterAtIndex,则会收到EXC_BAD_ACCESS错误。
任何人都可以解释为什么一个有效而另一个没有?
答案 0 :(得分:4)
characterAtIndex返回一个char,而不是(NSString *),可能问题在于返回错误的类型。
答案 1 :(得分:2)
与yoprogramo一样,字符不是NSString。由于您的方法返回一个指向字符串的指针,因此您返回的char将被读取为指针。当你的程序从该内存地址读取时,它会抛出EXC_BAD_ACCESS。