26、Cocoa编程中的异常、信号、错误处理与调试

Cocoa编程中的异常、信号、错误处理与调试

1. 比异常更糟糕的情况:信号导致的程序崩溃

在Cocoa编程中,除了可以通过捕获异常等代码级操作来处理一些错误,还有一种严重的问题是由于对象指针的错误使用导致的。每个Objective - C对象都是通过指向特定C结构体的指针来引用的,如果指针没有指向包含有效对象的内存块或者为 nil ,就很可能会发生内存访问错误,进而产生一个“信号”,最终导致应用程序崩溃。

Cocoa程序员通常会因以下两种情况不经意地导致信号使应用崩溃:
- 向未初始化的对象指针发送消息 :在Objective - C方法中声明一个新的局部变量指针时,默认情况下不能指望它自动指向 nil 或其他无害的东西,它可能指向一个完全不恰当的内存地址。例如以下代码:

- (void)uninitializedObject {
    NSMutableString *string;
    [string appendFormat:@"foo"];
}

在这个方法中,声明了一个指向 NSMutableString 的指针,但没有实际创建字符串。当尝试调用 appendFormat: 方法时,接收者不是一个有效的对象。将 [self uninitializedObject]; 添加到 applicationDidFinishLaunching: 方法中,构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值