SORU
16 AĞUSTOS 2011, Salı


"__Blok " " anahtar kelime ne anlama geliyor?

Tam olarak Objective-C __block anahtar kelime ne anlama geliyor? Eğer blok içinde değişkenleri değiştirmek için izin verir biliyorum, ama bilmek isterim...

  1. Tam olarak derleyici ne anlama geliyor?
  2. Başka bir şey var mı?
  3. Eğer ilk başta neden gerekli? öyle bir şey yoksa
  4. Dosyayı farklı bir yere mi? (Bul) edemem.

Teşekkürler!

CEVAP
16 AĞUSTOS 2011, Salı


Herhangi bir değişken bir blok içinde kullanıldığında özel bir şekilde tedavi edilmelidir damgasını vurdu derleyici söyler. Normalde de bloğu içinde kullanılan değişkenler ve bunların içeriği kopyalanır, böylece herhangi bir değişiklik bu değişkenler için yapılan blok dışında gösterme. __block ile işaretlenmiş zaman değişiklikler bloğu içinde de dışında görünür.

Bir örnek ve daha fazla bilgi için, Apple The __block Storage Type bkzBlok Programlama Konuları.

Önemli örnek budur:

extern NSInteger CounterGlobal;
static NSInteger CounterStatic;

{
    NSInteger localCounter = 42;
    __block char localCharacter;

    void (^aBlock)(void) = ^(void) {
          CounterGlobal;
          CounterStatic;
        CounterGlobal = localCounter; // localCounter fixed at block creation
        localCharacter = 'a'; // sets localCharacter in enclosing scope
    };

      localCounter; // unseen by the block
    localCharacter = 'b';

    aBlock(); // execute the block
    // localCharacter now 'a'
}

Bu örnekte, localCounter localCharacter iki blok denir önce değiştirilmiş. Ancak, bu blok içinde, localCharacter tek değişiklik __block anahtar kelime için görünür, teşekkürler. Tersine, blok localCharacter değiştirebilir ve bu değişiklik bloğunun dışında görünür.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Avast

    Avast

    27 NİSAN 2006
  • Benjamin Heckendorn

    Benjamin Hec

    4 Mayıs 2008
  • TSE

    TSE

    12 Kasım 2012