2

由于我过去已经遇到过一些 KVO 问题,因此它可能不是 10.13 beta 错误。

为了实时了解进程的状态,我将一个 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 中仍然无法使用

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

4

0 回答 0