macos – OSX状态菜单在Swift中不起作用

macos – OSX状态菜单在Swift中不起作用,第1张

概述我尝试使用 swift向状态栏添加一个简单的状态菜单,但不会显示. 与Objective-c一起工作: AppDelegate.h @interface AppDelegate : NSObject <NSApplicationDelegate> { IBOutlet NSMenu *statusMenu; NSStatusItem * statusItem;}@end Ap 我尝试使用 swift向状态栏添加一个简单的状态菜单,但不会显示.

与Objective-c一起工作:

AppDelegate.h

@interface AppDelegate : NSObject <NSApplicationDelegate> {    IBOutlet NSMenu *statusMenu;    NsstatusItem * statusItem;}@end

AppDelegate.m

@implementation AppDelegate- (voID)applicationDIDFinishLaunching:(NSNotification *)aNotification{    statusItem = [[Nsstatusbar systemStatusbar] statusItemWithLength:NSVariableStatusItemLength];    [statusItem setMenu:statusMenu];    [statusItem setTitle:@"Status Menu"];    [statusItem setHighlightmode:YES];}@end

但是,如果我尝试在swift中基本上做同样的事情,它什么都不做.

class AppDelegate: NSObject,NSApplicationDelegate {    @IBOutlet var statusMenu: NSMenu;    func applicationDIDFinishLaunching(aNotification: NSNotification?) {        let bar = Nsstatusbar.systemStatusbar()        let statusItem = bar.statusItemWithLength(CGfloat(NSVariableStatusItemLength))        statusItem.Title = "Status Menu"        statusItem.menu = statusMenu        statusItem.highlightmode = true    }}

没有错误,它只是没有做任何事情.调用函数applicationDIDFinishLaunching,因为它内部的println()创建输出.

有谁知道我在这里做错了什么?

解决方法 这里的问题是,在applicationDIDFinishLaunching完成执行后,statusItem将超出范围,而执行又会释放对象.在Objective-C代码中不是这种情况,因为statusItem变量是在类级别声明的.

这应该使你的Swift代码工作:

class AppDelegate: NSObject,NSApplicationDelegate {    @IBOutlet var statusMenu: NSMenu;    var statusItem: NsstatusItem?;    func applicationDIDFinishLaunching(aNotification: NSNotification?) {        let bar = Nsstatusbar.systemStatusbar()        statusItem = bar.statusItemWithLength(CGfloat(NSVariableStatusItemLength))        statusItem!.Title = "Status Menu"        statusItem!.menu = statusMenu        statusItem!.highlightmode = true    }}
总结

以上是内存溢出为你收集整理的macos – OSX状态菜单在Swift中不起作用全部内容,希望文章能够帮你解决macos – OSX状态菜单在Swift中不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1071125.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存