Как я получаю уведомления за пределами NSView? - PullRequest
1 голос
/ 14 марта 2012

Отказ от ответственности: я действительно новичок в ObjectiveC, поэтому, возможно, я допустил фундаментальные ошибки в структуре моего приложения, поэтому, пожалуйста, дайте мне знать, если есть лучший способ достичь моей цели.

Я пытаюсь создать приложение, которое находится в строке состояния, например Dropbox. Он должен получать уведомления. У меня сейчас работают уведомления, но я реализовал их в NSView, который находится в окне приложения. Я хочу удалить окно, чтобы иметь возможность получить приложение без окон (а-ля Dropbox). Если я удаляю окно, оно удаляет созданное мной представление, а затем удаляет способность моего приложения получать уведомления.

На всякий случай, если я плохо объясняю это, уведомления, которые я получаю, принимаются так:

#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;
}

Как я могу получать уведомления без окна? Или есть способ получать уведомления без просмотра?

Дополнительная информация: Я реализую компонент пользовательского интерфейса строки состояния как NSMenu, аналогично этому учебнику.

Я почти уверен, что есть, но я заблудился в литературе.

Спасибо за помощь!

1 Ответ

0 голосов
/ 14 марта 2012

Конечно, каждый объект в Objective-C может получать уведомления, так что просто добавьте этот код в ваш AppDelegate или где вам удобно, например, в некоторый класс модели.

(кстати: имена классов начинаются с заглавной буквы в ObjC по соглашению)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...