Ne enumerateObjectsUsingBlock için BOOL *dur argüman: için kullanılır?
enumerateObjectsUsingBlock:
son zamanlarda çok hızlı numaralandırma ihtiyaçlarım için kullanıyorum, ve sabit bir zaman numaralandırma bloğu BOOL *stop
kullanımı anlamakta güçlük çekiyorum.
NSArray
sınıf başvuru Devletleri
stop
: Boolean bir değer Bir başvuru. BlokYES
değerini ayarlamak için kullanılır dizinin işlenmesi dur.stop
argüman-sadece bir bağımsız değişken. Sadece içindeYES
Bu Boolean ayarlamak gerekir Blok.
O zaman tabii ki benim bloğu aşağıdaki numaralandırma durdurmak için ekleyebilirsiniz:
if (idx == [myArray indexOfObject:[myArray lastObject]]) {
*stop = YES;
}
Söylemek mümkün oldum ne, açıkça YES
12 *ayarı herhangi bir olumsuz yan etkileri yok. Numaralandırma otomatik olarak dizinin sonunda kendisini durdurmak gibi görünüyor. Yani *stop
kullanarak gerçekten bir blok içinde gerekli mi?
CEVAP
Blok stop
bağımsız değişken numaralandırma durdurmak için izin verirzamanından önce. for
normal bir döngü break
denk geliyor. Eğer dizideki her nesne ile gitmek isterseniz yok sayabilirsiniz.
for( id obj in arr ){
if( [obj isContagious] ){
break; // Stop enumerating
}
if( ![obj isKindOfClass:[Perefrigia class]] ){
continue; // Skip this object
}
[obj immanetizeTheEschaton];
}
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if( [obj isContagious] ){
*stop = YES; // Stop enumerating
return;
}
if( ![obj isKindOfClass:[Perefrigia class]] ){
return; // Skip this object
}
[obj immanentizeTheEschaton];
}];
Bu Blok içinde set olmalı çünkü bir parametredir, ancak okuma enumerateObjectsUsingBlock:
, NSError
yaygın olarak kodunuzu geri geçirilir aynı şekilde çerçeve çağrıları içinde.
- (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block {
// N.B: This is probably not how this method is actually implemented!
// It is just to demonstrate how the out parameter operates!
NSUInteger idx = 0;
for( id obj in self ){
BOOL stop = NO;
block(obj, idx , &stop);
if( stop ){
break;
}
}
}
Nasıl yansıması genel bir Yöntemi çağı...
Geçişlerini için Dinlenmek nedir ve na...
Temel veri yapıları Redis ne için kull...
Biçimler uzun printf için argüman nedi...
Nasıl ELMAH el ile hataları oturum açm...