SORU
16 ŞUBAT 2011, ÇARŞAMBA


Arama [self code>] bir blok içinden?

Sadece blok rastladım ve tam aradığım bir şey dışında olduğunu düşünüyorum: bir yöntem [öz] code > bloğu içinde arama yapmak mümkün mü?

Bu yapmak istediğim şey:

-(void)someFunction{
    Fader* fader = [[Fader alloc]init];

    void (^tempFunction)(void) = ^ {
        [self changeWindow:game]; 
        //changeWindow function is located in superclass
    };

    [fader setFunction:tempFunction];
}

Birkaç gün sonra aradım ve bunun mümkün olduğuna dair herhangi bir kanıt bulamıyorum.

Bu mümkünse, ya içindir değil mi bir şey için blokları kullanmak için çalışıyorum?

Blokları kullanarak olmamın sebebi Faser bir sınıf oluşturduk ve solma tamamlandığında çalıştırmak için bir blok mağaza etmek istiyorum.

Teşekkür ederim

EDİT: Tamam, öneri olarak ekledim, ama hala EXC_BAD_ACCESS bir hata alıyorum

-(void)someFunction{
    Fader* fader = [[Fader alloc]init];

    __block MyScreen* me = self;

    void (^tempFunction)(void) = ^ {
        [me changeWindow:game]; 
        //changeWindow function is located in superclass
    };

    [fader setFunction:tempFunction];
    [fader release];
}

Belki vermeye yetkim yokfaserfonksiyonu...?

CEVAP
16 ŞUBAT 2011, ÇARŞAMBA


Evet, bunu yapabilirsiniz.

Blok self korur unutmayın. Bu blok depolama bir ıvar ise olabilirkolaybir de hiç ayırmanın alacağı anlamına gelir döngüsü, korumak oluşturun.

Bunu çözmek için, bunu yapabilirsiniz:

- (void) someMethodWithAParameter:(id)aParameter {

  __block MySelfType *blocksafeSelf = self;
  void (^tempFunction)(void) = ^ {
      [blocksafeSelf changeWindow:game];
  };

  [self doSomethingWithBlock:tempFunction];

}

Başvurulan nesne korunmaz __block anahtar kelime anlamına gelir (diğer şeyler arasında).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • apenney888

    apenney888

    27 EKİM 2010
  • Random Act of Kindness Video Contest

    Random Act o

    18 EYLÜL 2012
  • Max Lee

    Max Lee

    18 AĞUSTOS 2006