0

我的游戏有一个接收字符串的方法。从 iOS7 开始,它有时会在其中崩溃。

在该方法中,我调用lowercaseString了该字符串,然后它以EXC_BAD_ACCESS.

-(void)changeDirection:(NSString *)_direction {
    if (![[direction lowercaseString] isEqualToString:[_direction lowercaseString]]) {

    }
}

我注意到的是,这些时候这个字符串似乎是一个内存地址

在此处输入图像描述

这就解释了它为什么会崩溃——我正在调用lowercaseString一个内存地址。

现在,最合乎逻辑的解决方案是看看为什么这个方法接收的是内存地址而不是实际的字符串,我猜。

但是,就目前而言,我想做一个快速的解决方法,这导致了这个问题:

如何检测给定参数是实际的字符串对象@"Hello" 还是内存地址?

4

1 回答 1

3

对象存在于堆上,您所调用NSString的实际上是指向它的指针。指针是内存地址,因此预期的行为不是问题。

EXC_BAD_ACCESS意味着您正在以错误的方式访问内存,即您指向的内存地址不是有效内存。

当您尝试访问悬空指针(即指向已释放对象的指针)或未初始化的指针时,可能会发生这种情况。

错误不在您发布的代码中,而是在为该_direction方法生成参数的代码中。

于 2013-10-20T00:19:51.683 回答