在发布模式下“未识别的选择器发送到实例”而不是在调试模式下

时间:2010-11-23 20:42:12

标签: objective-c cocoa

我有一个应用程序,它会在发布模式下生成大量“无法识别的选择器发送到实例”错误,而不是在调试中。 你对这个问题在哪里有任何想法吗?

谢谢和问候,

3 个答案:

答案 0 :(得分:1)

您是否正在发布与调试模式相同的SDK(10.6,10.5 ...)?您可能正在调用仅存在于10.6中的方法。但是, 会产生警告。你是在照顾警告而不是忽视它们吗?

答案 1 :(得分:1)

如果在完成对象使用之前释放对象,并且在同一地址分配了另一个对象,则发送用于旧对象的消息将命中新对象,如果它们属于不同的类,则我会得到那个例外。

运行静态分析器(或者,更好的是,将其打开以在构建设置中的每个构建上运行)。静态分析仪将向您展示这种性质的更简单的缺陷 - “低悬的果实”。

然后,在Instruments的Zombies工具下运行您的应用程序。如果你仍然有这种类型的错误(但是对于静态分析器来说太复杂了),当你向一个应该死的对象发送消息时,Zombies工具会在时间轴中放置一个标志。然后你可以从那里开始寻找虫子。重复,直到不再发生崩溃。

答案 2 :(得分:0)

可能是因为您在一种模式而不是另一种模式下链接框架,请确保在添加框架时链接到“所有配置”。