enumerateObjectsUsingBlock:Останнім часом я багато використовую для своїх потреб швидкого перерахування, і мені важко зрозуміти використання BOOL *stopв блоці перерахування.
Стан NSArrayпосилання на клас
stop: Посилання на логічне значення. Блок може встановити значення,YESщоб зупинити подальшу обробку масиву.stopАргумент є через єдиний аргумент. Ви повинні будь-коли встановлювати для цього логічного значенняYESлише Блок.
Тоді, звичайно, я можу додати в свій блок наступне, щоб зупинити перелік:
if (idx == [myArray indexOfObject:[myArray lastObject]]) {
*stop = YES;
}
З того, що я був в змозі сказати, явно не установка *stopна YESне має яких - небудь негативних побічних ефектів. Здається, перелік автоматично зупиняється в кінці масиву. Тож чи *stopдійсно необхідне використання в блоці?
stopпрапор є дорадчим; наприклад, перелік може продовжуватись для деякої невизначеної кількості ітерацій у паралельному випадку. Тобто не слід__blockбезумовно встановлювати змінну при кожному проходженні через перерахування і очікувати, що це буде "останнє" значення при використанніstopдля дострокового завершення. Завжди слід поєднувати параметр "ні, використовуй цей об'єкт" із налаштуваннямstop = YES;.