【问题标题】:Cannot remove an observer <NSArrayController> for the key path "count"无法删除键路径“count”的观察者 <NSArrayController>
【发布时间】:2016-11-28 23:31:16
【问题描述】:

我得到:

*** 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“无法从 中删除键路径“count”的观察者 ,因为它没有注册为观察者。'

我有一个后台 NSOperation,它正在填充 MyElement 的属性。这些 MyElement 对象位于由 NSArrayController 管理的数组中,并绑定到 NSTableView。

这可能与更改后台线程上的属性有关吗?如果是这样,我该如何禁用它,以便表格在这些更改完成之前不会看到这些更改(并且可以在主线程上更新)?

我已将其设置为按“大小”(NSNumber)属性和

崩溃看起来像:

0 CoreFoundation   0x00007fff87ec44f2 __exceptionPreprocess + 178
1 libobjc.A.dylib  0x00007fff85d6cf7e objc_exception_throw + 48
2 CoreFoundation   0x00007fff87f2b4bd +[NSException raise:format:] + 205
3 Foundation       0x00007fff8755d786 -[NSObject(NSKeyValueObserverRegistration) _removeObserver:forProperty:] + 504
4 Foundation       0x00007fff8755d533 -[NSObject(NSKeyValueObserverRegistration) removeObserver:forKeyPath:] + 108
5 Foundation       0x00007fff875ce1a4 -[NSObject(NSKeyValueObserverRegistration) 
...
15  Foundation     0x00007fff87572a69 _NSSetObjectValueAndNotify + 274
16  MyApp          0x0000000100051a10 -[MyPropertiesOperation main] + 496

【问题讨论】:

    标签: binding nsoperation nsrangeexception


    【解决方案1】:

    似乎我无法在后台线程中修改这些对象,而且我看不到暂时挂起观察者的方法,因此我将所有属性添加到后台线程上的字典中,然后在主线程上调用:

    [element setValuesForKeysWithDictionary:properties];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      相关资源
      最近更新 更多