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

  • GoProTutorials

    GoProTutoria

    18 NİSAN 2011
  • Tracy Hairston

    Tracy Hairst

    22 Mayıs 2009
  • JeezyVEVO

    JeezyVEVO

    12 Mayıs 2009