0

我打开了“启用僵尸对象”,我得到以下信息:

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

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

4

2 回答 2

4

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

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

等等

于 2012-08-06T13:01:48.830 回答
3

您可以使用 Instruments 启动您的应用程序,它将向您展示对象的完整生命周期。它在哪里被保留和释放,它在哪里变成了僵尸。只需启动 Instruments 并选择僵尸模板,然后就可以使用您的应用程序。之后,只需查看它生成的格式整齐的输出

于 2012-08-06T13:09:18.250 回答