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

  • Dion Coulls

    Dion Coulls

    16 AĞUSTOS 2006
  • Dumb Stupid Videos

    Dumb Stupid

    26 Kasım 2013
  • HowcastSportsFitness

    HowcastSport

    11 Mayıs 2011