NSStatusItem ненадолго появляется при запуске, но тут же исчезает

Я начинаю возвращаться к разработке Cocoa после того, как несколько месяцев не работал ни над чем. Первоначально, когда я начинал, я использовал Snow Leopard и Xcode 3. Сейчас я использую Lion с Xcode 4.2, и у меня возникли некоторые проблемы, с которыми я раньше не сталкивался.

Думаю, дело в том, что я никогда раньше не использовал ARC, поэтому я уверен, что что-то упустил.

Я пытаюсь создать приложение строки состояния без главного окна или значка док-станции. Когда я запускаю приложение, значок строки состояния моего приложения появляется ненадолго, примерно на секунду, но затем исчезает.

Вот мой код.

QuickPlusAppDelegate.h

#import <Cocoa/Cocoa.h>

@interface QuickPlusAppDelegate : NSObject <NSApplicationDelegate>

@property (assign) IBOutlet NSWindow *window;
@property (assign) NSStatusItem *statusItem;
@property (weak) IBOutlet NSMenu *statusItemMenu;

@property (strong) NSImage *statusItemIcon;
@property (strong) NSImage *statusItemIconHighlighted;
@property (strong) NSImage *statusItemIconNewNotification;

@end

QuickPlusAppDelegate.m

#import "QuickPlusAppDelegate.h"

@implementation QuickPlusAppDelegate
@synthesize statusItemMenu = _statusItemMenu;

@synthesize window = _window, statusItem = _statusItem;
@synthesize statusItemIcon = _statusItemIcon, 
    statusItemIconHighlighted = _statusItemIconHighlighted, 
    statusItemIconNewNotification = _statusItemIconNewNotification;

- (void) awakeFromNib
{
    NSBundle *appBundle = [NSBundle mainBundle];
    _statusItemIcon = [[NSImage alloc] initWithContentsOfFile:[appBundle pathForResource:@"statusItemIcon" ofType:@"png"]];
    _statusItemIconHighlighted = [[NSImage alloc] initWithContentsOfFile:[appBundle pathForResource:@"statusItemIconHighlighted" ofType:@"png"]];
    _statusItemIconNewNotification = [[NSImage alloc] initWithContentsOfFile:[appBundle pathForResource:@"statusItemIconNewNotification" ofType:@"png"]];

    _statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
    [_statusItem setImage:_statusItemIcon];
    [_statusItem setAlternateImage:_statusItemIconHighlighted];
    [_statusItem setHighlightMode:YES];
}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // empty
}

@end

Изменить Если вы видите что-то не так с моим кодом, сообщите мне. Я определенно хотел бы критиковать, чтобы мне стало лучше.

Другое редактирование Кажется, что значок строки состояния исчезает, когда загружается само главное окно.

11
задан Brandon Cordell 15 January 2012 в 21:34
поделиться