Cocoa编程中的错误处理与绘图基础
1. 内存管理与错误处理基础
在非垃圾回收(GC)的代码环境中,对象释放后应立即将指针置为 nil
,以避免悬空指针问题。例如:
[obj release];
obj = nil;
这样做可以防止后续代码意外访问已释放的对象。非GC应用中,若忘记保留要使用一段时间的对象,也可能出现类似问题,这类错误较难排查,因此建议尽可能使用GC。
2. NSError类介绍
在Cocoa中,异常通常用于指出代码中的错误,而非用于流程控制。对于文件访问错误、网络错误等情况,Cocoa越来越多地使用 NSError
类来处理。
2.1 错误域和错误码
不同操作系统有不同的错误报告方式:
- UNIX系统 :系统调用后可检查 errno
的值来确定错误类型。
- 经典Mac OS :许多系统函数返回 OSStatus
类型的整数,调用后需检查该值。
- Mac OS X :是混合操作系统,结合了UNIX和Carbon技术。为统一处理不同来源的错误,Apple引入了 NSError
类,它将系统级错误码封装在Objective - C对象中。每个 NSError
实例包含: