最近私は使用enumerateKeysAndObjectsUsingBlock:
していますが、職場の同僚の 1 人がこの列挙メソッドを別のスレッドから呼び出すことができ、私のコードが期待どおりに機能しない可能性があることを指摘したとき、今日は躊躇しました。彼は、高速列挙を使用する必要があるとさえ提案しました。enumerateKeysAndObjectsUsingBlock:
問題は、辞書に関しては、その性質上、高速な列挙が本当に好きで嫌いです。
私の方法は次のように見えました
- (NSArray *)someMethod
{
__block NSMutableArray *myArray = [NSMutableArray array];
[self.myDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[myArray addObject:obj];
}
return myArray;
}
myArray が常に期待値を返し (self.myDictionary
空でないと仮定)、常に someMethod と同じスレッドで呼び出されることを確認できますか?
enumerateKeysAndObjectsWithOptions:usingBlock:
メソッドがあり、それをオプションで呼び出すとNSEnumerationConcurrent
、複数のスレッドで同時に列挙が実行されることは承知しています。
しかし、に関するドキュメントが見つかりませんenumerateKeysAndObjectsUsingBlock
。同じことは、配列で使用される
ことを指します。enumerateObjectsUsingBlock: