当我运行此代码时
NSString *string = [NSString stringWithFormat:@"http://makrr.com/*****/****/*****/****/%@.mp3", [data objectForKey:@"location"]];`
我得到一个EXC_BAD_ACCESS。 [data objectForKey:@“Location”]是一个NSCFString。
答案 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
。您应该仔细检查您的内存管理,看它没有被自动释放(或手动释放)。