带有characterAtIndex的EXC_BAD_ACCESS,但不包含substringToIndex

时间:2011-10-21 20:02:29

标签: iphone objective-c ios

我是Objective-C的新手,作为一个非常简单的学习练习,我创建了一个方法来返回存储名称的变量的第一个首字母:

-(NSString *)initial
{
    return [_name substringToIndex:1];
}

当我使用substringToIndex时,这完全符合预期,但是如果我改为使用characterAtIndex,则会收到EXC_BAD_ACCESS错误。

任何人都可以解释为什么一个有效而另一个没有?

2 个答案:

答案 0 :(得分:4)

characterAtIndex返回一个char,而不是(NSString *),可能问题在于返回错误的类型。

答案 1 :(得分:2)

与yoprogramo一样,字符不是NSString。由于您的方法返回一个指向字符串的指针,因此您返回的char将被读取为指针。当你的程序从该内存地址读取时,它会抛出EXC_BAD_ACCESS。