2011-10-11 88 views
-1

我有問題,我無法找到病因。只要選擇了應用程序名稱菜單項或文件或編輯,就會出現菜單和應用程序崩潰。其他4個菜單選項正常工作。點擊NSMenu項目導致崩潰

我無法跟蹤誤差,因爲飛機墜毀,只要你選擇菜單下拉時,你其實並不甚至走了這麼遠來選擇菜單選項。

這是聲明代碼:

IBOutlet NSMenu *miFile; 
IBOutlet NSMenuItem *miNewProduct; 
IBOutlet NSMenuItem *miDeleteProduct; 
IBOutlet NSMenuItem *miDataupdateUndo; 
IBOutlet NSMenuItem *miExit; 

IBOutlet NSMenu *miEdit; 

IBOutlet NSMenu *miExtra; 
IBOutlet NSMenuItem *miSettings; 
IBOutlet NSMenuItem *miFilestoreCleanup; 
IBOutlet NSMenuItem *miEAN; 
IBOutlet NSMenuItem *miBeatport; 

IBOutlet NSMenu *miInvoice; 
IBOutlet NSMenuItem *miInvoicePreview; 
IBOutlet NSMenuItem *miInvoiceEnd; 
IBOutlet NSMenuItem *miInvoiceExport; 
IBOutlet NSMenuItem *miAccounting; 

IBOutlet NSMenu *miStockList; 
IBOutlet NSMenuItem *miServerRecieve; 
IBOutlet NSMenuItem *miExport; 
IBOutlet NSMenuItem *miImportModule; 

IBOutlet NSMenu *miHelp; 
IBOutlet NSMenuItem *miSendProtocol; 
IBOutlet NSMenuItem *miHelpLink; 
IBOutlet NSMenuItem *miReleaseNotes; 
IBOutlet NSMenuItem *miCheckUpdate; 
IBOutlet NSMenuItem *miRebeatDotCom; 
IBOutlet NSMenuItem *miAbout; 

沒有任何人有一個想法,什麼可能導致崩潰?據EXC_BAD_ACCESS崩潰,我已經使用的所有Intsruments工具,沒有發現任何...

這裏是一個崩潰點彙編代碼如果有用的話:

0x00007fff8461d39c <+0000> push %rbp 
0x00007fff8461d39d <+0001> mov %rsp,%rbp 
0x00007fff8461d3a0 <+0004> push %r14 
0x00007fff8461d3a2 <+0006> push %rbx 
0x00007fff8461d3a3 <+0007> mov (%rdi),%rbx ///CRASH 
0x00007fff8461d3a6 <+0010> cmp %rsi,%rbx 
0x00007fff8461d3a9 <+0013> je  0x7fff8461d3c6  <_ZN11TCFRetainedIPK8__CTFontE6RetainES2_+42> 
0x00007fff8461d3ab <+0015> mov %rdi,%r14 
0x00007fff8461d3ae <+0018> test %rsi,%rsi 
0x00007fff8461d3b1 <+0021> je  0x7fff8461d3be <_ZN11TCFRetainedIPK8__CTFontE6RetainES2_+34> 
0x00007fff8461d3b3 <+0023> mov %rsi,%rdi 
0x00007fff8461d3b6 <+0026> callq 0x7fff8469c642 <dyld_stub_CFRetain> 
0x00007fff8461d3bb <+0031> mov %rax,%rsi 
0x00007fff8461d3be <+0034> mov %rsi,(%r14) 
0x00007fff8461d3c1 <+0037> test %rbx,%rbx 
0x00007fff8461d3c4 <+0040> jne 0x7fff8461d3cb <_ZN11TCFRetainedIPK8__CTFontE6RetainES2_+47> 
0x00007fff8461d3c6 <+0042> pop %rbx 
0x00007fff8461d3c7 <+0043> pop %r14 
0x00007fff8461d3c9 <+0045> pop %rbp 
0x00007fff8461d3ca <+0046> retq 
0x00007fff8461d3cb <+0047> mov %rbx,%rdi 
0x00007fff8461d3ce <+0050> pop %rbx 
0x00007fff8461d3cf <+0051> pop %r14 
0x00007fff8461d3d1 <+0053> pop %rbp 
0x00007fff8461d3d2 <+0054> jmpq 0x7fff8469c63c <dyld_stub_CFRelease> 
0x00007fff8461d3d7 <+0059> nop  

菜單在IB完全建立。它在10.7.2上運行。崩潰在10.6以及。使用GC。沒有殭屍,分配,泄漏或可與任何的儀器被掛住的東西 - 我要明顯重複此...

+0

這是遠遠不夠的細節。張貼崩潰的回溯。另外,EXC_BAD_ACCESS的最佳工具是殭屍。讓它崩潰,然後發佈有關消息殭屍的詳細信息。這是一個內存管理錯誤,它不太可能不是你的。你真的需要發佈所有可能的細節。 –

+0

「我用所有Intsruments工具並沒有發現......」不明白這句話的一部分?我明顯清楚地意識到這很可能是內部錯誤。這可能是MM的問題,但不可見或由用戶創建的點擊事件創建它。菜單項的定義和連接方式與其他4個菜單行相同。 – mbpro

+0

直到你我的反應後,編輯您的問題,我們都知道你是「嘗試過了,沒有發現任何東西」,但是這是*不*足夠的細節。任何時候有人堅持認爲這是一個沒有證據支持的框架錯誤,警報響起。您尚未顯示任何證據表明它不是您的代碼。如果你想向開發人員社區尋求幫助,你會做得更好。 –

回答

0

我不能只看到接口文件有關代碼註釋。你應該參考MenuItemView的代碼。 「MenuItemView」是一個Cocoa應用程序,演示如何在NSMenuItems中嵌入NSViews。本示例旨在說明如何使用各種用戶界面元素(如控件以及應用程序的菜單欄)完成此操作。你也可以參考 First Steps in GNUstep GUI Programming: NSApplication, NSMenu

+0

謝謝你試圖幫助我。我已經發布了代碼聲明,以避免不公平評級,因爲沒有發佈任何代碼。我知道如何建立菜單,直到現在我還沒有遇到過這種問題。這個問題可能只存在於10.7中,但這不是我在Lion中唯一的項目,我也沒有遇到類似的問題。 – mbpro