菜单应用程序 - 这是对的吗?

时间:2011-03-13 19:38:43

标签: objective-c cocoa macos

我正在尝试创建一个应用程序,当主窗口不可见时,会在菜单栏中显示一个图标。但是,我不确定这个代码是否正常。我没有错误也没有警告,但是在我的应用程序和其他应用程序之间来回切换几个应用程序后,例如。 Twitter或Safari我得到了

  

收到信号:   “EXC_BAD_ACCESS”。

这是我的代码:

- (void)applicationDidResignActive:(NSNotification*)aNotification
{
        statusItem = [[[NSStatusBar systemStatusBar] 
                       statusItemWithLength:NSVariableStatusItemLength]
                      retain];
        [statusItem setHighlightMode:YES];
        [statusItem setEnabled:YES];

            //Set menubar item's tooltip
        [statusItem setToolTip:@"Nucleus"];
        [statusItem setMenu:theMenu];
            //Set the menubar item's title
        [statusItem setTitle:[NSString stringWithString:@"N"]]; 

}

- (void)applicationDidBecomeActive:(NSNotification*)aNotification
{
    [statusItem release];
}

2 个答案:

答案 0 :(得分:2)

如果应用程序在您发布statusItem变量时崩溃,则分配的menu属性被过度释放的可能性很大。我不确定这个,因为我不知道theMenu变量来自哪里。

答案 1 :(得分:2)

我只是替换了[statusItem release]; [[NSStatusBar systemStatusBar] removeStatusItem:statusItem];这是一种享受。我不想完全释放它,因为我仍然需要它,以防用户稍后切换应用程序。感谢@Kevin Ballard! :)