enumerateObjectsUsingBlock:Gần đây, tôi đang sử dụng rất nhiều cho nhu cầu liệt kê nhanh của mình và tôi đang gặp khó khăn trong việc hiểu cách sử dụng BOOL *stoptrong khối liệt kê.
Các NSArraytrạng thái tham chiếu lớp
stop: Tham chiếu đến giá trị Boolean. Khối có thể đặt giá trịYESđể ngừng xử lý thêm mảng. Đốistopsố là đối số duy nhất. Bạn chỉ nên đặt Boolean nàyYEStrong Block.
Vì vậy, tất nhiên tôi có thể thêm phần sau vào khối của mình để dừng việc liệt kê:
if (idx == [myArray indexOfObject:[myArray lastObject]]) {
*stop = YES;
}
Từ những gì tôi có thể nói, không thiết lập rõ ràng *stopđể YESkhông có bất kỳ tác dụng phụ tiêu cực nào. Việc liệt kê dường như tự động dừng lại ở cuối mảng. Vậy việc sử dụng có *stopthực sự cần thiết trong một khối không?
stoplá cờ là cố vấn; ví dụ, việc liệt kê có thể tiếp tục đối với một số lần lặp không xác định trong trường hợp đồng thời. Tức là bạn không nên đặt một__blockbiến vô điều kiện trên mỗi lần đi qua phép liệt kê và mong đợi nó là giá trị "cuối cùng" khi sử dụngstopđể kết thúc sớm. Bạn nên luôn kết hợp "không, sử dụng đối tượng này" với cài đặtstop = YES;.