Обход ключей / значений NSDictionary enumerateKeysAndObjectsUsingBlock более эффективен, чем цикл ключей и вызов objectForkey:?

Мне нужно пройти по всем парам ключ / значение словаря и что-то сделать с обоими полями. Мне интересно, что более эффективно, традиционный подход «ключ foreach» или подход блоков с использованием enumerateKeysAndObjectsUsingBlock :.

Вот вам пример:

Традиционный подход (до блоков)

for (NSString* key in [self.dictionary allKeys] ) {
    [self processKey:key value: [self.dictionary objectForKey:value ]];
}

Блочный подход.

 [self.dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
        [self processKey:key value:obj];
    }]; 

Мне кажется, что обход пар ключ / значение с помощью блока происходит быстрее, но я не уверен, так как не знаю, как реализованы словари и конкретный метод блока.

Есть мысли?

Заранее спасибо!

13
задан Lio 22 September 2011 в 14:23
поделиться