【发布时间】:2011-03-11 19:14:19
【问题描述】:
当我的自定义数据在 iPhone(3G,3.1)上加载时,我得到 Exc Bad Access 在这一行:
NSMutableArray* dataArr = [NSKeyedUnarchiver unarchiveObjectWithFile:pathGG]; //=EXC BAD ACCESS
在 Ipad 和模拟器上工作
我在模拟器中保存数据(到documentsDirectory路径),然后将数据替换到项目,并从[NSBundle mainBundle]加载
在数组中我使用 NSValue 来存储 CGPoint。
完整来源:
-(void) SaveData:(NSMutableArray*)dataLevel {
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
NSString* fileName = @"data.dat";
NSString* pathGG = [documentsDirectory stringByAppendingPathComponent:fileName]; // retain];
BOOL isWrite = [NSKeyedArchiver archiveRootObject:dataLevel toFile:pathGG];
if(isWrite) NSLog(@"YES");
else NSLog(@"!!!");
}
+(NSMutableArray*) LoadData {
NSString* fileName = @"data.dat";
NSString* pathGG = [[NSBundle mainBundle] pathForResource:fileName ofType:@"dat"]; // retain];
NSMutableArray* dataA = [NSKeyedUnarchiver unarchiveObjectWithFile:pathGG]; //EXC BAD ACCESS
return dataA;
}
如果我使用跟随方式(保存/加载相同的方法),我也会得到 EXC BAD ACCESS:
NSKeyedUnarchiver* decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSArray* dataArr = [decoder decodeObjectForKey:@"dataLevel"]; //EXC BAD ACCESS
【问题讨论】:
-
调试检查这些变量/指针是否为 NIL
-
在保存方法中所有变量都不为零。在加载方法中,pathGG 不是 nil,(顺便说一下,如果找不到文件,我不会得到 EXC BAD ACCESS)。我注意到,当我在模拟器中调试时,第一秒内 dataArr 的值“无效总和”,但在一些字节之后。
标签: ios iphone save load exc-bad-access