由于我过去已经遇到过一些KVO问题,因此可能不是10.13测试版错误。
为了实时获取进程的状态,我将NSImageCell值绑定到NSImage,并且我将另一个线程的值分配给主线程,如下所示:
dispatch_sync(dispatch_get_main_queue(), ^{
[MyViewController sharedInstance].myStatusImage = [NSImage imageNamed:NSImageNameStatusAvailable];
});
它在10.12完美运行,但在10.13 beta 2上完全没有图像。
我已经检查过myStatusImage的值并且分配得很好,它的绑定不起作用,也没有在GUI上反映出来。 就好像它没有在主线程上发送,例如
我已尝试willChangeValueForKey:
setValue:forKey:
didChangeValueForKey:
,但没有做到。
我的图片不会出现在10.13 beta 2中。
更新:我意识到这次刷新是通过回调NSTimer完成的。 考虑到NSRunloop,它会改变什么吗? 仍然没有在10.13 beta 9中工作
Update2:KenThomas解决方案有效:绑定NSImage而不是NSImageCell。 但是NSButton仍然存在一个问题,它的标题与NSString绑定。 标题不会出现在视图启动时,但只要我按下ALT-TAB切换到Finder,就会立即出现。相同:好像它不是在主线程中制作的。