2011-10-11 60 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