SORU
24 AĞUSTOS 2011, ÇARŞAMBA


Bir geri arama yöntemi olarak kullanmak için bir blok alarak uygulamaya

Bir yöntem buna benzer yazmak istiyorum:

 (void)myMethodWithView:(UIView *)exampleView completion:(void (^)(BOOL finished))completion;

Temelde sözdizimi Apple'ın sınıf yöntemlerden biri alınan UIView için soyunmuş.

  (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;

Ve bu şekilde kullanılmasını bekliyoruz ki:

[myFoo myMethodWithView:self.view completion:^(BOOL finished){
                     NSLog(@"call back success");
                 }];

Benim sorum bunu nasıl uygulayabilirim? Eğer birisi doğru Dokümantasyon için bana gelin eğer ben harika olurdu, ve çok temel bir örnek daha (ya da bir şey bulamadım Yığın Taşması ... ... benzer bir cevap mutluluk duyacağız. Ben hala bunun doğru bir yaklaşım olduğunu, hatta olup olmadığını belirlemek için delegeler hakkında yeterince bilgimiz yok!

Bu uygulama dosyasında olmasını beklerdim ne kaba bir örnek verdim, ama bilgi bulamıyorum gibi sanırım iş.

  (void)myMethod:(UIView *)exampleView completion:(void (^)(BOOL finished))completion {
    // do stuff

    if (completion) {
        // what sort of syntax goes here? If I've constructed this correctly!
    }

}

CEVAP
24 AĞUSTOS 2011, ÇARŞAMBA


Normal bir işlev gibi bir blok diyebilirsiniz:

BOOL finished = ...;
if (completion) {
    completion(finished);
}

Bu tam bir engelleme fonksiyonu kullanılarak örnek uygulama şu şekilde görünecektir demek:

  (void)myMethod:(UIView *)exampleView completion:(void (^)(BOOL finished))completion {
    if (completion) {
        completion(finished);
    }
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Gan Eden Productions

    Gan Eden Pro

    11 HAZİRAN 2011
  • Vicious Computers

    Vicious Comp

    14 EKİM 2006
  • Within Temptation

    Within Tempt

    18 EYLÜL 2006