我正在使用UIDocument加載文件。我現在損壞了一個文件,看看會發生什麼以及我的應用程序的行爲。它會因EXC_BAD_ACCESS而崩潰,我現在想知道我應該如何處理這種情況。我只是希望該文件將永遠不會損壞?在UIDocument之前的日子裏,我使用了@try和@catch作爲NSEXCEPTION,但這不適用於EXC_BAD_ACCESS。這是我會使用NSZOMBIE的情況嗎?據我瞭解其他帖子,NSZombie只用於調試目的,而不是真正應該依賴的東西。下面是代碼拋出一個EXC_BAD_ACCESS行,如果我敗壞我的數據:加載文件時抓取EXC_BAD_ACCESS的方法
-(BOOL)loadFromContents:(id)contents ofType:(NSString *)typeName error:(NSError **)outError {
if (!_books) {
_books = [[NSMutableArray alloc] init];
}
self.books = [NSKeyedUnarchiver unarchiveObjectWithData:contents]; // THIS WILL CRASH IF CONTENTS GOT CORRUPTED
if ([_delegate respondsToSelector:@selector(libraryDocumentUpdated:)]) {
[_delegate libraryDocumentUpdated:self];
}
return YES;
}
感謝您的任何建議。
我遇到同樣的問題。 loadFromContents傳遞一個無效的內容對象,所以unarchive崩潰。顯然,對我來說,這個錯誤是在iCloud中,它不應該傳遞無效的對象,但它確實如此。 – pstoppani