enumerateObjectsUsingBlock:
Akhir-akhir ini saya banyak menggunakan untuk kebutuhan pencacahan cepat, dan saya mengalami kesulitan memahami penggunaannya BOOL *stop
di blok pencacahan.
The NSArray
negara referensi kelas
stop
: Referensi ke nilai Boolean. Blok dapat mengatur nilaiYES
untuk menghentikan pemrosesan lebih lanjut dari larik. Thestop
argumen argumen out-satunya. Anda hanya boleh menyetel Boolean ini keYES
dalam Blok.
Jadi tentu saja saya bisa menambahkan yang berikut ini di blok saya untuk menghentikan pencacahan:
if (idx == [myArray indexOfObject:[myArray lastObject]]) {
*stop = YES;
}
Dari apa yang saya sudah bisa memberitahu, tidak secara eksplisit menetapkan *stop
untuk YES
tidak memiliki efek samping negatif. Pencacahan tampaknya secara otomatis berhenti sendiri di akhir larik. Jadi, apakah *stop
benar-benar perlu digunakan dalam satu blok?
sumber
stop
bendera tersebut adalah penasehat; pencacahan dapat berlanjut untuk beberapa jumlah iterasi yang tidak ditentukan dalam kasus bersamaan, misalnya. Yaitu Anda tidak boleh menetapkan__block
variabel tanpa syarat pada setiap melewati pencacahan dan berharap itu menjadi nilai "terakhir" saat menggunakanstop
untuk menghentikan awal. Anda harus selalu memasangkan "tidak, gunakan objek ini" dengan pengaturanstop = YES;
.