Objective-c静态分析工具

时间:2013-08-15 15:46:45

标签: objective-c crash selector static-analysis

我的崩溃报告服务显示了iOS应用程序的大量神秘崩溃。出于某些原因,我怀疑代码正在尝试在没有特定选择器的对象上执行选择器。

如何静态分析代码以找到错误的选择器?

我在OS X 10.8上使用Xcode 4.6编写Objective-C代码。我没有使用一个工具,它不会调用诸如调用performSelector之类的东西,其中选择器是从字符串等构建的。我认为一个基本工具可以工作。

1 个答案:

答案 0 :(得分:3)

从Xcode的“产品”菜单中选择“分析”。或按 shift + 命令 + B

它对于识别MRC中的常规内存管理内容非常有用。但它对ARC计划仍然有用。

您可能还想尝试为所有例外设置exception breakpoint

我还会推荐您使用 Xcode用户指南的Debug and Tune Your App部分。或者Ray Wenderlich的My App Crashed, Now What?系列。


顺便说一句,虽然分析仪有帮助,但我认为它不会发现错误的选择器。您可能想要分享使用选择器的方式,因为您使用的是performSelector,通常有更好的模式。有时您必须使用它,但通常还有其他更强大的模式。或者,如果您绝对需要使用选择器,请添加运行时respondsToSelector检查。例如:

NSAssert([object respondsToSelector:@selector(someMethod:)], @"%@ does not respond to selector someMethod:", object);

或者,有条件地执行选择器,如果它响应它(这是你执行一个可能以特定iOS版本为条件的方法):

if ([object respondsToSelector:@selector(someMethod:)])
    [object performSelector:@selector(someMethod:)];
相关问题