esta es probablemente una pregunta para principiantes con respecto al manejo de la memoria.Cómo liberar objetos al utilizar la devolución de llamada de bloque
¿Cómo puedo liberar un objeto cuando uso bloques como devolución de llamada en el objetivo c?
(código actualizado)
@implementation ObjectWithCallback
- (void)dealloc {
[_completionHandler release];
[super dealloc];
}
- (void)doTaskWithCompletionHandler:(void(^)(void))handler {
_completionHandler = [handler copy];
// Start tasks...
}
- (void)tasksDone {
// Do callback block
_completionHandler();
// Delete reference to block
[_completionHandler release];
_completionHandler = nil;
}
// Use of the ObjectWithCallback
ObjectWithCallback *request = [[ObjectWithCallback alloc] init];
[request doTaskWithCompletionHandler:^(void){
// Callback called and task is ready.
}];
¿Qué objeto desea lanzar y por qué no puede liberarlo dentro del bloque? – Richard
¿Qué te hace pensar que no puedes ejecutar el objeto en el bloque? – bbum
Quiere lanzar 'solicitud'. – Caleb