Macos 可可装订工作于10.12,但不高于10.13

Macos 可可装订工作于10.12,但不高于10.13,macos,cocoa,key-value-observing,cocoa-bindings,macos-high-sierra,Macos,Cocoa,Key Value Observing,Cocoa Bindings,Macos High Sierra,由于我在过去已经有一些KVO问题,它可能不是10.13测试版的bug 为了实时获取进程的状态,我将NSImageCell值绑定到NSImage,并将另一个线程的值分配给主线程,如下所示: dispatch_sync(dispatch_get_main_queue(), ^{ [MyViewController sharedInstance].myStatusImage = [NSImage imageNamed:NSImageNameStatusAvailable

由于我在过去已经有一些KVO问题,它可能不是10.13测试版的bug

为了实时获取进程的状态,我将NSImageCell值绑定到NSImage,并将另一个线程的值分配给主线程,如下所示:

dispatch_sync(dispatch_get_main_queue(), ^{
                [MyViewController sharedInstance].myStatusImage = [NSImage imageNamed:NSImageNameStatusAvailable];
            });
它在10.12版上运行得很好,但在10.13版beta 2版上根本没有图像

我已经检查了myStatusImage的值,它被很好地分配了,是绑定不起作用,并且没有反映在GUI上。 比如说如果它没有被发送到ex的主线程上

我尝试了
willChangeValueForKey:
setValue:forKey:
didChangeValueForKey:
,但没有成功

我的图片没有出现在10.13 beta 2中

更新:我意识到这个刷新是由一个NSTimer回调完成的。 它会改变什么吗? 在10.13 beta 9中仍然不起作用

更新2:KenThomas解决方案有效:绑定到NSImage而不是NSImageCell。 但是NSButton仍然存在一个问题,它的标题绑定到NSString。
标题不会在视图启动时显示,但在我按ALT-TAB切换到Finder for ex时会立即显示。相同:就好像它不是在主线程中生成的一样。

setNeedsDisplay
?(对于
sharedinstance.view
?)这主意不错,但也没用!太糟糕了。我对dispatch_sync而不是async有些烦恼。有同步的原因吗?当我意识到这些刷新是由NSTimer回调进行的时,我已经更新了我的问题。在10.13 beta 9中仍然不起作用。使用nsrunlop可以看到什么?如果在图像视图本身而不是图像视图单元格上设置绑定,会有什么不同吗?