簡體   English   中英

無法刪除觀察者 <NSArrayController> 關鍵路徑“計數”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM