enumerateObjectsUsingBlock:Hızlı numaralandırma ihtiyaçlarım için son zamanlarda çok kullanıyorum BOOL *stopve numaralandırma bloğundaki kullanımını anlamakta zorlanıyorum .
NSArraySınıf referans durumları
stop: Bir Boolean değerine referans. BlokYES, dizinin daha fazla işlenmesini durdurmak için değeri ayarlayabilir . Bustopargüman, salt olmayan bir argümandır. Bu Boole değerini yalnızcaYESBlok 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ı *stopiçin YESherhangi bir olumsuz yan etkisi yoktur. Numaralandırma, dizinin sonunda otomatik olarak durur. Öyleyse kullanmak *stopgerçekten bir blokta gerekli mi?
stopBayrağı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ı vestoperken 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;.