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
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);
}
}
Bu tip 'genel tür parametre olara...
jQuery / Ajax - $.() ajax Geri arama P...
Nasıl formu gönderdikten sonra bir Wor...
Nasıl bir setTimeout için bir parametr...
'#_=_' Dönüş için Facebook G...