Cocoa开发中的异常、信号、错误处理与调试
1. 比异常更糟糕:信号导致的程序崩溃
在Cocoa开发中,除了可以通过捕获异常来处理一些错误外,当对象指针使用不当时,还会引发另一种严重问题。在Cocoa里,每个Objective - C对象都是通过指向特定C结构体的指针来引用的,该结构体定义了Objective - C对象的基本结构。如果指针没有指向包含有效对象的内存块,或者不是指向 nil ,那么几乎肯定会发生某种形式的内存访问错误,从而产生一个“信号”,最终导致应用程序崩溃。
Cocoa程序员通常会通过以下两种方式无意间导致信号使应用程序崩溃:
- 向未初始化的对象指针发送消息 :在Objective - C方法中,当将一个新指针声明为局部变量时,默认情况下,不能指望它会自动指向 nil 或其他无害的东西。实际上,它通常会指向完全不合适的东西,比如未映射到系统中的内存地址。以下是示例代码:
- (void)uninitializedObject {
NSMutableString *string;
[string appendFormat:@"foo"];
}
在这个方法中,声明了一个指向 NSMutableString 的指针,但实际上并没有创建该字符串。当尝试调用 appendFormat: 方法时,接收者不是一个有效的对象。若在 applicationDidFinis
超级会员免费看
订阅专栏 解锁全文
14

被折叠的 条评论
为什么被折叠?



