gpt4 book ai didi

objective-c - 如何在 NSView 之外接收通知?

转载 作者:行者123 更新时间:2023-12-03 17:24:47 26 4
gpt4 key购买 nike

免责声明:我对 ObjectiveC 还很陌生,所以我可能在应用程序的结构中犯了根本性错误,所以请让我知道是否有更好的方法来实现我的目标。

我正在尝试制作一个像 Dropbox 一样位于状态栏中的应用程序。它应该会收到通知。我现在有通知正在运行,但我已在应用程序窗口中的 NSView 中实现了它们。我想删除窗口以便能够实现无窗口应用程序(类似于 Dropbox)。如果我删除该窗口,它会删除我创建的 View ,然后删除我的应用程序接收通知的能力。

以防万一我解释得不好,我收到的通知是这样接收的:

#import "test.h"    
@implementation test

- (id) initWithFrame:(NSRect)frameRect
{
self = [super initWithFrame:frameRect];
...
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(windowChangeNotification:) name:NSWorkspaceDidActivateApplicationNotification object:nil];
return self;
}

- (void)windowChangeNotification:(NSNotification *)note
{
...
}

测试是一个 NSView:

@interface appTracker : NSView {
appTrackerDB * eventDB;
}

如何在没有窗口的情况下接收通知?或者有没有办法在没有 View 的情况下接收通知?

额外信息:我将状态栏 UI 组件实现为 NSMenu,类似于 this教程。

我很确定有,但我迷失在文献中了。

感谢您的帮助!

最佳答案

当然,Objective-C 中的每个对象都可以接收通知,因此只需将此代码放入您的 AppDelegate 中或任何您认为合适的地方,也许是某个模型类。

(顺便说一句:按照惯例,类名在 ObjC 中以大写字母开头)

关于objective-c - 如何在 NSView 之外接收通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9695721/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com