Реализация метода, использующего блок для использования в качестве обратного вызова

Я хотел бы написать метод, подобный этому:

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

Я в основном урезал синтаксис, взятый из одного из методов класса Apple для UIView :

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

И можно было бы ожидать, что это будет использоваться так:

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

Мой вопрос: как я могу это реализовать? Если кто-то может указать мне на правильную документацию, это было бы здорово, и очень простой пример был бы очень признателен (или аналогичный ответ о переполнении стека - я не смог его найти). Я до сих пор недостаточно знаю о делегатах, чтобы определить, является ли это даже правильным подходом!

Я привел примерный пример того, что я ожидал увидеть в файле реализации, но поскольку я не могу найти информацию, это предположение.

+ (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!
    }

}
69
задан Chris 11 September 2011 в 20:19
поделиться