1
我的問題,很簡單,我認爲,但我找不到任何直接的信息來確認或否認。SKNode媲美NSMutableArray,GCD,枚舉
我的問題是:
當枚舉通SKNodes,他們應該被小心使用治療:
SKNode *someTreeNode;
NSArray *someArray = [someTreeNode children];
[someArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
//blah blah
}];
喜歡的NSMutableArray?
如果您使用GCD並操作SKNode(someTreeNode),即添加和刪除父級? (另外,我可以使用派遣的障礙,同時裝載的someArray阻止
但所有的這一切問題的真正最低的形式是:
是SKNode線程安全的像NSArray的,或者是不安全喜歡的NSMutableArray
?我的直覺告訴我,這是不安全的,但就像我說的,我不能確認或否認這一點......
感謝
很簡單。問題是:對象是可變的還是不可變的?即使從容器的角度來看,枚舉'NSArray'也只是線程安全的。沒有什麼可以防止從多個併發線程中更改數組中的對象。 – Avi
在我將枚舉從NSArray枚舉更改爲SKNode枚舉之後,我在執行SKNode枚舉時沒有崩潰。所以在我的最後,我會稱他們爲「安全」,除非我再次遇到一些崩潰事件,這些事件我還沒有得到。我問這個問題的原因是,我正在使用一些NSMutableArrays,並在週末出現了一些嚴重的枚舉錯誤。我調試了它們,並開始考慮SKNode並使用了子數組。現在我已經將它們還原爲標準的枚舉方法,而不是使用Children Array,並且它們很好! – rezwits