Я создал простое приложение, чтобы научиться использовать NSWorkspaceWillSleepNotification и NSWorkspaceDidWakeNotification. Моя цель — вызвать метод, когда компьютер спит и просыпается. Приложение, которое я создал, соответственно изменит каждую метку. После создания приложения я запускаю его со своего рабочего стола. После запуска приложения я усыпляю компьютер. При пробуждении компьютера ярлыки в приложении не меняются. Я добавил в окно кнопки IBAction, чтобы метки менялись. При нажатии кнопок метки действительно меняются. Но я хочу, чтобы что-то подобное происходило автоматически во время сна и бодрствования. Что я делаю не так?
#import "Controller.h"
@implementation Controller
- (void)fileNotifications {
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver: self
selector: @selector(makeSleep:)
name: NSWorkspaceWillSleepNotification
object: nil];
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver: self
selector: @selector(makeWake:)
name: NSWorkspaceDidWakeNotification
object: nil];
}
- (IBAction)makeSleep:(id)sender {
[sleepLabel setStringValue:@"Computer Slept!"];
}
- (IBAction)makeWake:(id)sender {
[wakeLabel setStringValue:@"Computer Woke!"];
}
@end
- (void)makeSleep:(NSNotification *)notification;
вместо- (IBAction)makeSleep:(id)sender
. поскольку методы обратного вызова наблюдения за уведомлением служат совершенно другой цели, чем IBActions. Тот факт, что это работает, просто благодаря тому, что они используют один и тот же шаблон селектора (это метод с одним аргументом id/object). - person Regexident   schedule 06.04.2012