Objective c 发送无对象消息是否可以收到警告?
我知道在Objective-C中向nil对象发送消息是完全可以的。但是,我很好奇是否有任何运行时支持标记这种情况。我可以看出这在测试/调试情况下很有用。在稍微摆弄一下调试器之后,我发现了这一点 您可以在Objective c 发送无对象消息是否可以收到警告?,objective-c,testing,runtime,warnings,null,Objective C,Testing,Runtime,Warnings,Null,我知道在Objective-C中向nil对象发送消息是完全可以的。但是,我很好奇是否有任何运行时支持标记这种情况。我可以看出这在测试/调试情况下很有用。在稍微摆弄一下调试器之后,我发现了这一点 您可以在objc\u msgSend中设置断点,第一个参数的断点条件为零(接收方): 打开“断点”窗口:Command-Option-B 双击最后一行以创建新的符号断点 输入符号:objc\u msgSend 在“条件”列中输入条件:*(int*)($esp+4)==0 当您运行可执行文件时,它会经常中断
objc\u msgSend
中设置断点,第一个参数的断点条件为零(接收方):
objc\u msgSend
*(int*)($esp+4)==0
p(char*)*(int*)($esp+8)
以上所有功能仅适用于Intel Mac(模拟器中的32位Cocoa或Cocoa Touch)。PPC或ARM体系结构使用其他寄存器名和调用约定。我把它作为一个练习留给您,让您了解如何在这些平台上工作;) 或者,您可以使用dtrace:
这也可以。我已经将你的博客添加到我的RSS中——很棒的东西。很酷。我在待办事项列表上还有很多帖子。只是要找时间。