Cocoa编程中的异常、信号、错误处理与调试
1. 比异常更糟糕的情况:信号导致的程序崩溃
在Cocoa编程中,除了可以通过捕获异常等代码级操作来处理一些错误,还有一种严重的问题是由于对象指针的错误使用导致的。每个Objective - C对象都是通过指向特定C结构体的指针来引用的,如果指针没有指向包含有效对象的内存块或者为 nil ,就很可能会发生内存访问错误,进而产生一个“信号”,最终导致应用程序崩溃。
Cocoa程序员通常会因以下两种情况不经意地导致信号使应用崩溃:
- 向未初始化的对象指针发送消息 :在Objective - C方法中声明一个新的局部变量指针时,默认情况下不能指望它自动指向 nil 或其他无害的东西,它可能指向一个完全不恰当的内存地址。例如以下代码:
- (void)uninitializedObject {
NSMutableString *string;
[string appendFormat:@"foo"];
}
在这个方法中,声明了一个指向 NSMutableString 的指针,但没有实际创建字符串。当尝试调用 appendFormat: 方法时,接收者不是一个有效的对象。将 [self uninitializedObject]; 添加到 applicationDidFinishLaunching: 方法中,构
超级会员免费看
订阅专栏 解锁全文
15

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



