enumerateObjectsUsingBlock:
Hızlı numaralandırma ihtiyaçlarım için son zamanlarda çok kullanıyorum BOOL *stop
ve numaralandırma bloğundaki kullanımını anlamakta zorlanıyorum .
NSArray
Sınıf referans durumları
stop
: Bir Boolean değerine referans. BlokYES
, dizinin daha fazla işlenmesini durdurmak için değeri ayarlayabilir . Bustop
argüman, salt olmayan bir argümandır. Bu Boole değerini yalnızcaYES
Blok içinde ayarlamalısınız .
Bu yüzden elbette numaralandırmayı durdurmak için bloğuma aşağıdakileri ekleyebilirim:
if (idx == [myArray indexOfObject:[myArray lastObject]]) {
*stop = YES;
}
Ben söylemek mümkün oldum kadarıyla, açıkça kurmadığını *stop
için YES
herhangi bir olumsuz yan etkisi yoktur. Numaralandırma, dizinin sonunda otomatik olarak durur. Öyleyse kullanmak *stop
gerçekten bir blokta gerekli mi?
stop
Bayrağın tavsiye niteliğinde olduğuna dikkat edin ; numaralandırma, örneğin eşzamanlı durumda bazı tanımlanmamış sayıda yineleme için devam edebilir. Yani__block
, numaralandırmanın her geçişinde koşulsuz olarak bir değişken ayarlamamalı vestop
erken sonlandırmak için kullanırken bunun "son" değer olmasını beklememelisiniz . Her zaman "hayır, bu nesneyi kullan" seçeneğini ayar ile birleştirmelisinizstop = YES;
.