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

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



