[英]Cannot remove an observer <NSArrayController> for the key path “count”
我正進入(狀態:
***由於未捕獲的異常“ NSRangeException”而終止應用程序,原因:“無法從<MyElement>中刪除鍵路徑“ count”的觀察者<NSArrayController>,因為它沒有注冊為觀察者。”
我有一個背景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
看來我無法在后台線程中修改這些對象,並且看不到暫時掛起觀察者的方法,因此我將所有屬性添加到后台線程的字典中,然后在主線程中調用:
[element setValuesForKeysWithDictionary:properties];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.