我收到此错误
malloc: * * * error for object 0x8a591d4: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
No memory available to program now: unsafe to call malloc
No memory available to program now: unsafe to call malloc
它来自这一行
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Info"
ofType:@"plist"];
NSData *plistData = [NSData dataWithContentsOfFile:plistPath];
NSDictionary *loadedPlist =
[NSPropertyListSerialization propertyListFromData:plistData
mutabilityOption:0 format:NULL errorDescription:NULL]; <<< this line
plistData的值设置为Summary Unavailable
我不知道从哪里开始?
编辑 - 添加了更多代码
答案 0 :(得分:5)
我要添加另一个答案:你也可能已经在堆上了,并且你在propertyListFromData上失败了:只是因为它做了大量的分配而碰巧碰到了坏点。因此,在Xcode中编辑您的方案,并确保已选中所有内存管理项目(在“运行”任务的“诊断”选项卡中)。
答案 1 :(得分:0)
您是否在malloc_error_break中设置了断点?这至少会给你一个回溯,你可能会看到一些注意事项。如果不出意外,您可以从GDB控制台尝试po plistData
。
dictionaryWithContentsOfFile:
会更简单。
答案 2 :(得分:0)
如何存储Info.plist?它是标准的plist / xml文件吗?以下是否会解决您尝试解决的问题,并可能防止此问题发生?
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Info"
ofType:@"plist"];
NSDictionary *loadedPlist = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
或者如果你想要一个自动发布的对象......
NSDictionary *loadedPlist = [NSDictionary dictionaryWithContentsOfFile:plistPath];