siguiente es mi código:Problema invalidar NSTimer en dealloc
archivo .h:
#import "Foundation/Foundation.h"
@interface GObject:NSObject{
NSTimer* m_Timer;
}
@property(nonatomic, retain) NSTimer* m_Timer;
- (void)Initialize;
- (void)TimerCallback:(NSTimer*)pTimer;
@end
archivo .m:
@implementation GObject
@synthesize m_Timer
- (void) Initialize{
self.m_Timer = [NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector: @selector(TimerCallback:)
userInfo: nil
repeats: YES];
}
- (void)TimerCallback:(NSTimer*)pTimer {
//Some Code
}
- (void)dealloc {
[m_Timer invalidate]; //--Crashes Here
[m_Timer release];
m_Timer = nil;
[super dealloc];
}
@end
Ahora cuando el dealloc es llamado, el programa se bloquea en la línea que invalida el temporizador. Las siguientes dos líneas ni siquiera se llaman. Aparece un error de "EXC_BAD_ACCESS". ¿Alguien puede decirme por qué podría estar pasando eso, y cuál es la forma correcta de detener y liberar una variable de miembro de NSTimer en una clase?
¿Está creando el getter/setter de la propiedad con @synthesize? – gerry3
Sí, necesito acceder a este temporizador desde fuera de mi clase también. Aunque setter no es requerido. – Prashant