use*_*321 5 iphone objective-c ipad ios
我遇到了大麦曾经发生过的奇怪崩溃,我想知道这是否可能是由于读取的数据损坏造成的?我出现这个错误:
-[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive
> # Binary Image Name Address Symbol 0 CoreFoundation 0x3357b2a3 __exceptionPreprocess
> 1 libobjc.A.dylib 0x3b3df97f objc_exception_throw
> 2 CoreFoundation 0x3357b1c5 -[NSException initWithCoder:]
> 3 Foundation 0x33e124ef -[NSKeyedUnarchiver initForReadingWithData:]
> 4 Foundation 0x33e73537 +[NSKeyedUnarchiver unarchiveObjectWithFile:]
Run Code Online (Sandbox Code Playgroud)
我的代码很好,这种情况在我的应用程序中发生过一次,但我只是想知道损坏的数据是否是发生这种情况的一个可行原因。如果是这样,有没有办法处理损坏的数据?
您可以将部分代码包装在 @try @catch 构造中以评估异常并避免崩溃。这是示例:
- (UIImage*) loadImageFromCacheWithFilePath: (NSString*) somePath {
UIImage* image = nil;
@try {
image = [NSKeyedUnarchiver unarchiveObjectWithFile:somePath];
} @catch (NSException* exception) {
// Surpress any unarchiving exceptions and continue with nil
NSLog(@"Load image from cache was failed with exception: %@", [exception reason]);
}
return image; //This will return nil if exception caught
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4601 次 |
| 最近记录: |