EXC_BAD_ACCESS错误

时间:2011-08-18 23:08:30

标签: iphone objective-c sdk nsstring exc-bad-access

当我运行此代码时

NSString *string = [NSString stringWithFormat:@"http://makrr.com/*****/****/*****/****/%@.mp3", [data objectForKey:@"location"]];`  

我得到一个EXC_BAD_ACCESS。 [data objectForKey:@“Location”]是一个NSCFString。

2 个答案:

答案 0 :(得分:2)

EXC_BAD_ACCESS表示您正在尝试访问已从内存中释放的数据。很可能,您忘记在途中某处保留data对象,或者关键“位置”的对象被释放了太多次。如果没有更多的上下文代码,很难确切地说出问题所在。

Here's a question有一些答案可以很好地解释EXC_BAD_ACCESS

答案 1 :(得分:2)

我不确定EXC_BAD_ACCESS的来源,但编译器正在将[data objectForKey:@"Location"]作为NSCFString读取,因为NSString是一个类集群,以及其他基础类型,如NSNumber和NSArray:

  

类集群是Foundation框架的设计模式   广泛使用。类集群组成一些私有的,   公共抽象超类下的具体子类。分组   以这种方式的类简化了公开可见的体系结构   面向对象的框架,不会降低其功能丰富性。   类集群基于抽象工厂设计模式   在“可可设计模式”中讨论过。

最有可能的是,[data objectForKey:@"Location"]被释放了太多次并且已经被释放。这可能会出现错误EXC_BAD_ACCESS。您应该仔细检查您的内存管理,看它没有被自动释放(或手动释放)。