现在,我有几行ObjC来轮询正在设置的默认打印机,在我的应用程序中,它应该使用新打印机的名称更新标签,但到目前为止它还没有工作
在我的控制器中,我有以下内容:
[self updatePrinter];
这称之为微小的方法:
- (void)updatePrinter {
NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
self.printerName.stringValue = printInfo.printer.name;
NSLog(@"Printer: %@", printInfo.printer.name);
}
当它到达我的方法时(在viewDidLoad
中),它会正确填充标签printerName
。
我尝试添加一个计时器来轮询新的打印机默认设置:
[NSTimer scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(updatePrinter)
userInfo:nil
repeats:YES];
这样运行正常,但是如果我打开系统首选项并更改默认打印机,它会继续打印旧默认值的名称。如果我重新启动应用程序,它的行为会有所不同。
如何在运行时将新默认值反映在我的应用程序中?
答案 0 :(得分:1)
不要再次使用相同的NSPrintInfo
对象,而是使用
[[NSPrintInfo alloc] initWithDictionary:@{}];