iphone - 加载文件时捕获 EXC_BAD_ACCESS 的方法

标签 iphone objective-c cocoa-touch ios5 icloud

我正在使用 UIDocument 加载文件。我现在损坏了一个文件,以查看发生了什么以及我的应用程序的行为方式。它会因 EXC_BAD_ACCESS 崩溃,我现在想知道应该如何处理这种情况。我是否只是希望文件永远不会被损坏?在 UIDocument 之前的日子里,我使用 @try 和 @catch 来表示 NSEXCEPTION,但这不适用于 EXC_BAD_ACCESS。在这种情况下我会使用 NSZOMBIE 吗?据我了解其他帖子,NSZombie 仅用于调试目的,而不是您应该始终依赖的东西。如果我损坏了数据,下面的代码行会抛出 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;
    }

感谢您的任何建议。

最佳答案

EXEC_BAD_ACCESS 不是您捕获的异常,它告诉您正在访问无效的内存地址,从而导致崩溃。 NSZombies 只是一种保持所有应该被释放的对象“活着”的方法(因此不会释放它们占用的内存,这显然不是你在发布版本中想要的),以便告诉你你是哪个“释放”的消息传递。您需要弄清楚为什么您会获得 EXEC_BAD_ACCESS。书籍是保留属性(property)吗?

关于iphone - 加载文件时捕获 EXC_BAD_ACCESS 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8106871/

相关文章:

iphone - Apple 推送通知服务 - 发送许多通知

objective-c - 各种 kIOPMAssertionType 的区别

ios - 以非模态方式呈现 UIViewController?

iphone - iPhone 的 SNMP 库

objective-c - Xcode - 让单元格在触摸事件后显示新文本,使其展开

iphone - 我可以在 iPhone 上使用哪些安全框架和工具来保护我的数据?

iphone - iPhone 应用程序中的单选按钮

iOS:隐藏后无法显示 View

iphone - 文本字段 :shouldChangeCharactersInRange:replacementString: in subclass

ios - 是否可以仅使用密码进行身份验证,即使设备在 ios 中具有 touch id 功能,swift