'daki tam kapsamdan kaçınmam gereken blok kalıplarını bilmiyorum Apple'ın belgelerinde şöyle denir: Bir blok değişmezi (yani,^{...}) bir adresin adresidir. Bloğu temsil eden yığın-yerel veri yapısı. Yığın-yerel veri yapısının kapsamı aşağıdaki örneklerde gösterildiği desenleri kaçınmalısınız, böylece bu nedenle çevreleyen birleşik deyimdir:Nesne-c
void dontDoThis() {
void (^blockArray[3])(void); // an array of 3 block references
for (int i = 0; i < 3; ++i) {
blockArray[i] = ^{ printf("hello, %d\n", i); };
// WRONG: The block literal scope is the "for" loop.
}
//for example I invoke the block here
blockArray[1]();
}
void dontDoThisEither() {
void (^block)(void);
int i = random():
if (i > 1000) {
block = ^{ printf("got i at: %d\n", i); };
// WRONG: The block literal scope is the "then" clause.
}
// ...
}
ben kaçınmalısınız ne desen bilmiyorum. Örneğin, "if" veya "for" ifadesinin ardında, blok tanımıyla aynı genel kapsamı olan bloğu çağırmak gibi görünüyor. Açıklamama yardım eder misiniz?
İşte ben işaretçiler bir benzetme aşağıdaki gibidir düşünüyorum bağlantı https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Blocks/Articles/bxUsing.html#//apple_ref/doc/uid/TP40007502-CH5-SW1
Teşekkür ederiz. Ve demek oluyor ki blok, yöntemde bir yığın değişkeni yerine, kopyalanmış bir özellik olarak bildirilmelidir? –
veya bir genel değişken olarak bir blok bildirebilir miyim? Aslında, her yerde görülen yerel yığında da saklanmalıdır. –
Anladım! Çok teşekkür ederim. Blok bileşik deyimi, yığın yerel veri yapısının adresi olarak büyük ölçüde tamsayı bir değerden hoşlanır. –