with tutorial para framework español djangoproject con applications objective-c ios callback objective-c-blocks

objective-c - para - tutorial django



Implementando un método tomando un bloque para usar como devolución de llamada (3)

Puede llamar a un bloque como una función normal:

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

Eso significa que la implementación de una función de bloque completa con su ejemplo se vería así:

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

Me gustaría escribir un método similar a esto:

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

Básicamente, he desglosado la sintaxis tomada de uno de los métodos de clase de Apple para UIView :

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

Y esperaría que se usara así:

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

Mi pregunta es ¿cómo puedo implementar esto? Si alguien puede indicarme la documentación correcta que sería genial, y un ejemplo muy básico sería muy apreciado (o una respuesta similar en Stack Overflow, no pude encontrar ninguna). Todavía no sé lo suficiente acerca de los delegados para determinar si ese es el enfoque correcto.

He puesto un ejemplo aproximado de lo que esperaba que fuera en el archivo de implementación, pero como no puedo encontrar información, creo que funciona.

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


Recomiendo encarecidamente que leas en Blocks para entender lo que está sucediendo.