【发布时间】:2015-04-12 22:57:16
【问题描述】:
众所周知,在 ObjectiveC 中,我们可以向 nil 对象发送消息,并且不会抛出空指针异常。但这也使一些错误难以发现。那么在我们这样的调试中执行代码时,有没有办法让程序抛出空指针异常或崩溃。
NSString * s = nil;
int n = [s intValue];
我希望这段代码可以让程序崩溃,这样我可以更容易地找出这个错误。
【问题讨论】:
-
您应该阅读异常编程指南并考虑使用 NSAssert 宏。
-
我建议,如果您编写 Objective-C 代码,请顺其自然。很多时候传递一个 nil 指针是没有问题的。如果这是一个问题,NSAssert 是你的朋友。
-
@Tirth:你做过任何 Objective-C 编程吗?代码将运行良好并将 n 设置为 0。
-
您可以在 objc_msgSend 中使用断点,条件是第一个参数为零。这种方法的问题是它会一直中断。所有的框架都向 nil 发送消息。
-
@NikolaiRuhe 你的方法是我想要的,但是我们如何为 objc_msgsend 设置断点呢?我们只有objc_msgSend的头文件(/user/include/objc/message.h),如果我们在头文件中给这个函数下断点,这个断点就没有用了。
标签: objective-c nullpointerexception null