我有一個NSMutableSet
集合,其中包含作爲SKNode
的子類的自定義對象。我正在製作一個遊戲,將這些對象添加到NSMutableSet中並從中移除。我正在從主線程添加和刪除,所以線程化不是問題。出於某種原因,有時不能刪除對象,因爲找不到它。下面的方法返回NO
:爲什麼NSMutableSet不能刪除其中包含的對象?
[self.set containsObject:object]
我看着這個問題並打印對象的地址和散列數量和NSMutableSet
所有對象,果然出現在集合。
如果地址和散列號相等,可能是沒有找到對象的原因是什麼?我知道containsObject
方法使用isEqual
來比較這兩個值。
** [self.set containsObject:object] **方法不可能刪除對象,可能是您正在傳遞對象引用,並且經過一段時間後,由於內存問題或ARC對象被刪除,所以當你試圖通過[self.set containsObject:object]得到它時可能找不到它。 –
什麼'member:'return? – bgoers
哦,我不是說[self.set containsObject:object]移除了這個對象。我首先嚐試了[self.fireSet removeObject:fire],但它沒有刪除該對象,因此我檢查了是否首先包含該對象。我正在使用ARC,但不應該釋放該對象,因爲我在NSMutableSet中看到它。 –