可可绑定工作在10.12但不是High Sierra 10.13

时间:2017-07-06 15:06:09

标签: macos cocoa key-value-observing cocoa-bindings macos-high-sierra

由于我过去已经遇到过一些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,就会立即出现。相同:好像它不是在主线程中制作的。

0 个答案:

没有答案