Tôi bắt đầu trở lại phát triển Ca cao sau khi không làm việc gì trong vài tháng. Ban đầu khi tôi bắt đầu tôi đã sử dụng Snow Leopard và Xcode 3. Tôi hiện đang chạy Lion với Xcode 4.2 và tôi đang chạy vào một số vấn đề mà tôi đã không chạy vào trước.NSStatusItem xuất hiện một thời gian ngắn khi ra mắt, nhưng nhanh chóng biến mất
Tôi tin rằng có lẽ thực tế là tôi chưa bao giờ sử dụng ARC trước đây, vì vậy tôi chắc chắn tôi đang thiếu thứ gì đó.
Tôi đang cố gắng tạo ứng dụng Statusbar, không có cửa sổ chính hoặc biểu tượng đế. Khi tôi chạy ứng dụng, biểu tượng Statusbar cho ứng dụng của tôi xuất hiện một thời gian ngắn, trong khoảng một giây, nhưng sau đó biến mất.
Heres mã của tôi.
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
Sửa Nếu bạn thấy bất cứ điều gì sai trái với mã của tôi xin vui lòng cho tôi biết. Tôi chắc chắn sẽ có một số phê bình để tôi có thể trở nên tốt hơn.
Chỉnh sửa khác Dường như biểu tượng thanh trạng thái biến mất khi cửa sổ chính tự tải.
Đề xuất mã của bạn: Sử dụng [appBundle imageForResource: @ "statusItemIcon"] thay vì mã tải hình ảnh hiện tại của bạn. Nó phải nhanh hơn, hỗ trợ hình ảnh @ 2x một cách minh bạch, hỗ trợ không png mà không cần thay đổi mã và dễ đọc hơn :) –
@Catfish_Man Cảm ơn bạn! Đó chính là loại phê bình mà tôi đang tìm kiếm! –