2010-01-21 12 views
15

que corrieron en un EXC_BAD_ACCESS cuando desasignar un objeto que tiene pocos performSelector:withObject:afterDelay donde los métodos de selección de llama a otro objeto y estoy lanzando el objeto ...¿Cómo puedo eliminar todo performSelector: withObject: afterDelay :?

// en algún lugar de mi clase que estoy llamando

[self performSelector:@selector(callObject1Function) withObject:nil afterDelay:2.0]; 


- (void)callObject1Function{ 
    [object1 function1] // Here i am getting "EXC_BAD_ACCESS" 
} 

- (void)dealloc { 
[object1 release]; 
[super dealloc]; 
} 

Simplemente no entiendo pensé que cuando dealloc es el objeto, todo lo relacionado con el objeto debe ser eliminado o cancelado, incluso el performSelector con retraso !! Puede explicar alguna favor, gracias .....

Respuesta

27

Uso NSObject 's:

-cancelPreviousPerformRequestsWithTarget:selector:object: 

para cancelar todos los selectores de pendientes de realizar.

+18

También solo NSObject's + cancelPreviousPerformRequestsWithTarget: si desea eliminar todas las solicitudes de selector y objeto de realización a ese destino sin especificar selectores ni objetos – Bogatyr

23

He utilizado el siguiente código en todas mis aplicaciones y está funcionando.

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(MethodName) object:nil]; 

Gracias, Hemang.

Cuestiones relacionadas