可可 - 为什么我应该将我的statusItem放在ApplicationDelegate中?

时间:2016-03-21 06:58:14

标签: objective-c macos cocoa

我是OSX应用程序开发的新手,我想创建一个状态栏应用程序。

要在状态栏中显示NSStatusItem,我首先将statusBar项目放在ViewController中。它确实有效。

//ApplicationDelegate.h
#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate>

@property (strong, nonatomic) NSStatusItem *statusBar;

@end

//ApplicationDelegate.m
#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate


- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application
}

- (void)applicationWillTerminate:(NSNotification *)aNotification {
    // Insert code here to tear down your application
}

-(void)awakeFromNib{
    self.statusBar = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];

    self.statusBar.title = @"T";


    self.statusBar.highlightMode = YES;

}
@end

(当我使用awakeFromNib代替storyboard时,我不确定是否应该使用nib方法。)

然而,当我阅读一些演示代码时,我发现我应该在ApplicationDelegate类中这样做。

为什么呢?我认为这是 VIEW 的一部分,因为我遵循 MVC 规则。

1 个答案:

答案 0 :(得分:1)

NSStatusItem与窗口或任何视图无关。即使没有附加视图,它也可以保留在NSStatusBar中。

因此,在ApplicationDelegate类中创建和初始化NSStatusItem是一个好习惯。