2010-05-11 1 views
0

Используя окно 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 

Я в полной растерянности относительно того, что проблемы есть. Есть ли лучший способ сделать это?

ответ

3

Трассировка стека показывает сбои в обновлении/рисовании пункта меню. Это, похоже, не имеет никакого отношения к вашему связанному флажку.

Запустите приложение в Инструментах с его шаблоном Zombies; вероятно, вам скажут, что вы (или Какао) отправили сообщение на освобожденный объект. Узнайте, что это за объект, и устраните недодержанность или чрезмерное освобождение, из-за чего он умер преждевременно.

+0

- [NSMenu _enableItem] - тот, который его вызывает. Будучи тем, что я ничего не делаю с этим, о котором я знаю, я не могу придумать, что его вызывает. –

+2

релиз на закрытии - для окна была проблема –