Cocoa绑定和应用程序首选项 - 崩溃

时间:2010-05-11 05:25:50

标签: cocoa binding crash cocoa-bindings

使用documentation provided by Apple创建一个不需要任何额外代码的应用程序首选项窗口,我似乎已经触发了一个我无法追踪的崩溃。

虽然来自Apple的东西比较旧,但我相信我的设置与此处显示的几乎相同:

当我运行我的应用程序(Hcode)并转到首选项菜单项时,它会显示正确的窗口,其中包含我在绑定中指定的默认值,但每个选项卡的空格除外是空白的(不知道如何修复此问题) )。

当窗口关闭时,应用程序崩溃并返回类似于此的回溯:

(gdb) bt
#0  0x00007fff800cb1d4 in objc_msgSend_vtable5 ()
#1  0x00007fff80447cf3 in -[NSMenu _enableItem:] ()
#2  0x00007fff80447ad8 in -[NSCarbonMenuImpl _carbonUpdateStatusEvent:handlerCallRef:] ()
#3  0x00007fff8042b3b0 in NSSLMMenuEventHandler ()
#4  0x00007fff80e06b57 in DispatchEventToHandlers ()
#5  0x00007fff80e060a6 in SendEventToEventTargetInternal ()
#6  0x00007fff80e23d85 in SendEventToEventTarget ()
#7  0x00007fff80e52e61 in SendHICommandEvent ()
#8  0x00007fff80e66357 in UpdateHICommandStatusWithCachedEvent ()
#9  0x00007fff80e02a6d in HIApplication::EventHandler ()
#10 0x00007fff80e06b57 in DispatchEventToHandlers ()
#11 0x00007fff80e060a6 in SendEventToEventTargetInternal ()
#12 0x00007fff80e23d85 in SendEventToEventTarget ()
#13 0x00007fff80e6599b in SendMenuOpening ()
#14 0x00007fff80e65388 in DrawTheMenu ()
#15 0x00007fff80e65149 in MenuChanged ()
#16 0x00007fff80e643d4 in TrackMenuCommon ()
#17 0x00007fff80e60dbe in MenuSelectCore ()
#18 0x00007fff80e60596 in _HandleMenuSelection2 ()
#19 0x00007fff802fc3b9 in _NSHandleCarbonMenuEvent ()
#20 0x00007fff802cfeda in _DPSNextEvent ()
#21 0x00007fff802cf379 in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] ()
#22 0x00007fff8029505b in -[NSApplication run] ()
#23 0x00007fff8028dd7c in NSApplicationMain ()
#24 0x0000000100001cac in main (argc=1, argv=0x7fff5fbff5e0) at /Users/iaefai/Projects/Hcode/Source/main.m:13

我完全不知道问题是什么。是否有更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:3)

您的堆栈跟踪显示更新/绘制菜单项时发生崩溃。这似乎与绑定的复选框无关。

使用Zombies模板在Instruments中运行您的应用;它可能会告诉你,你(或Cocoa)向一个解除分配的对象发送了一条消息。找出对象是什么,并修复导致它过早死亡的保留不足或过度释放。