Я читал несколько статей о блоках и быстром перечислении, GCD и т.п. @ Бум, кто? Написано много статей по теме GCD и блоков, говорится, что методы перечисления блоков всегда так же быстры или быстрее, чем эквиваленты быстрого перечисления. Вы можете прочитать его рассуждения здесь .
Хотя это был увлекательный интеллектуальный разговор, я согласен с теми, кто сказал, что это действительно зависит от поставленной задачи.
У меня есть несколько задач для выполнения. выполнить, и мне нужно, чтобы они были выполнены быстро, дешево и эффективно. Apple дает нам много вариантов того, как мы хотим перечислить массив, но я не уверен, какой выбрать.
for (id obj in array)
{
/* Do something with |obj|. */
}
[array enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop) {
/* Do something with |obj|. */
}];
[array enumerateObjectsWithOptions: NSEnumerationConcurrent usingBlock: ^(id obj, NSUInteger idx, BOOL *stop) {
/* Do something with |obj|. */
}];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_apply([array count], queue, ^(size_t idx) {
id obj = [array objectAtIndex: idx];
/* Do something with |obj|. */
});
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_async(queue, ^(void) {
dispatch_apply([array count], queue, ^(size_t idx) {
id obj = [array objectAtIndex: idx];
/* Do something with |obj|. */
});
});
Или, возможно, что-то с NSBlockOperation
s или NSOperationQueue
?
TIA, Alex.