何ヶ月も何も作業していない状態で、Cocoa開発に取り掛かり始めました。もともと私が始めたとき、私はSnow LeopardとXcode 3を使用していました。私はXcode 4.2でLionを実行しています。以前は実行していなかったいくつかの問題が発生しています。NSStatusItemは起動時に一時的に表示されますが、ただちに表示されなくなります
以前はARCを使用したことがないと思われるので、私は何か不足していると確信しています。
メインウィンドウやドックアイコンなしでステータスバーアプリケーションを作成しようとしています。アプリケーションを実行すると、アプリケーションのステータスバーアイコンが約1秒間表示されますが、表示されなくなります。
Heres my code。
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
編集あなたは私のコードに何か問題が表示された場合は私に知らせてください。私は間違いなくいくつかの批評をして、私はより良くなることができます。
別の編集メインウィンドウ自体が読み込まれるとステータスバーアイコンが消えるようです。
コードのご提案:現在の画像読み込みコードの代わりに[appBundle imageForResource:@ "statusItemIcon"]を使用してください。より速く、@ 2xイメージを透過的にサポートし、コード変更なしで非pngをサポートし、読みやすくなります。 –
@Catfish_Manありがとう!それはまさに私が探している種類の批判です! –