Я бы не рекомендовал реализовывать вашу собственную сортировку, если NSArray
уже имеет встроенный метод для него, который, скорее всего, будет сортировать быстрее, чем вы можете придумать. Вы можете просто использовать это:
NSArray *sortedArray = [arrayToDoWorkOn sortedArrayWithComparator:^(id firstObject, id secondObject) {
/* comparison code (e.g. return [[firstObject title] compareTo:[secondObject title]], or something) */
}];
Теперь, если вам нужно использовать объекты во время сортировки, вас ждет засолка, но я бы порекомендовал рассмотреть сортировки более эффективные, чем пузырьковая сортировка (быстрая сортировка довольно хорошая).
Кроме того, я думаю, что вы немного озадачены GCD. Написание и использование блока по своей сути не выполняет его с GCD; это должно быть сделано вручную (строго говоря, блок - это просто набор строк кода и по сути не имеет никакого отношения к GCD; GCD просто использует блоки для выполнения). Метод NSArray
enumerateObjectsUsingBlock:
, скорее всего, не использует GCD для перечисления массива (по крайней мере, ссылка не дает представления об этом, поэтому, пожалуйста, докажите, что я не прав), и если это так, то это не потому, что вы его предоставляете с блоком, а скорее потому, что именно так Apple решила его реализовать. Большинство методов, принимающих блоки, не используют GCD для их выполнения.
Я рекомендую вам прочитать Справочник Grand Central Dispatch (GCD) , а также Руководство по блокам и GCD Самурая Какао, чтобы лучше понять специфику данной темы.