나는 enumerateObjectsUsingBlock:
최근에 빠른 열거 요구 사항을 위해 많이 사용 BOOL *stop
하고 있으며 열거 블록에서의 사용법을 이해하는 데 어려움을 겪고 있습니다.
NSArray
클래스 참조 상태
stop
: 부울 값에 대한 참조입니다. 블록은YES
배열의 추가 처리를 중지 하기 위해 값을 로 설정할 수 있습니다 .stop
인수는 아웃 전용 인수입니다. 이 부울YES
은 블록 내 에서만 설정해야합니다 .
따라서 물론 열거를 중지하기 위해 블록에 다음을 추가 할 수 있습니다.
if (idx == [myArray indexOfObject:[myArray lastObject]]) {
*stop = YES;
}
내가 말할 수있었습니다 바로는, 명시 적으로 설정하지 않는 *stop
하기 위해 YES
어떤 부정적인 부작용이 없습니다. 열거 형은 배열의 끝에서 자동으로 중지되는 것 같습니다. 그래서 *stop
블록에서 정말 필요합니까?
stop
플래그가 자문이다; 예를 들어 동시 케이스에서 정의되지 않은 반복 횟수 동안 열거가 계속 될 수 있습니다. 즉__block
, 열거 형을 통과 할 때마다 무조건적으로 변수를 설정해서는 안되며stop
조기 종료 를 위해 사용할 때 "마지막"값이 될 것으로 기 대해서는 안됩니다 . 항상 "아니요,이 개체 사용"을 설정과 연결해야합니다stop = YES;
.