Cocoa Zombies - 识别消息来源

时间:2012-08-06 12:58:40

标签: objective-c ios cocoa nszombie

我已启用“启用僵尸对象”,我收到以下内容:

2012-08-06 13:43:05.452 MyApp[234:707] *** -[MyViewController respondsToSelector:]: message sent to deallocated instance 0x97a6c50

我想知道:有没有一种简单的方法可以找出哪个对象正在向MyViewController发送消息? MyViewController是许多不同事物的委托,我想弄清楚发送消息的是什么。

2 个答案:

答案 0 :(得分:4)

您可以在调试器中请求堆栈跟踪,以查看哪些函数称为其他函数。例如,使用GDB,您可以看到类似的内容:

(gdb) bt
0x01234567 in main()
0xabcdef12 in UIApplicationMain
0xdef01234 in - [AppDelegate application:didFinishLaunchingWithOptions:]

答案 1 :(得分:3)

您可以使用Instruments启动应用程序,它将显示对象的完整生命周期。它被保留和释放的地方,以及变成僵尸的地方。只需启动Instruments并选择僵尸模板,然后使用您的应用程序。然后,只需看看它生成的整齐格式的输出