我的游戏有一个接收字符串的方法。自iOS7开始,它有时会崩溃。检查变量是否包含内存地址
在该方法中,我在该字符串上调用lowercaseString
,然后它与EXC_BAD_ACCESS
崩溃。
-(void)changeDirection:(NSString *)_direction {
if (![[direction lowercaseString] isEqualToString:[_direction lowercaseString]]) {
}
}
东西,我注意到的是,这时候,这串似乎是一个内存地址:
这就解释了为什么会崩溃 - 我在记忆调用lowercaseString
地址。
现在,最合理的解决方案是查看为什么此方法接收内存地址而不是实际的字符串,我猜。
但是,现在,我希望做一个快速的解决方法,这导致了这个问题:
如何检测给定参数是否像@"Hello"
或内存地址的实际字符串对象?
可能是一个已经发布的NSString –
在Objective-C中,所有对象都通过它们的内存地址进行传递,所以不存在检测参数是字符串对象还是内存地址的情况。最有可能'_direction'要么没有被初始化,要么被分配给它,但它指向的对象被删除。 – user1118321