Я искал ответ, и у меня ничего не работает.
У меня есть NSTimer в качестве атрибута Appdelegate, этот NSTimer должен запускать свое действие в любое время, даже когда приложение находится в фоновом режиме (это приложение локализации - так что оно может работать вечно)
Это код:
if(conectar){
self.myTimer = [[NSTimer scheduledTimerWithTimeInterval:10.0
target:self
selector:@selector(abrirPresencia)
userInfo:nil
repeats:NO]retain];
}
else{
self.myTimer = [[NSTimer scheduledTimerWithTimeInterval:10.0
target:self
selector:@selector(cerrarPresencia)
userInfo:nil
repeats:NO]retain];
}
Через 10 секунд приложение вылетает, у меня есть точки останова в обоих методах, и оно не останавливается, как если бы метод даже не вызывался, вместо того, чтобы запускать метод, который он вылетает.
Вот методы:
-(void)cerrarPresencia{
NSLog(@"SOY EL TIMERRRRR!!!! %@");
//[[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground
if (YES){
[self.location stopUpdatingLocation];
[self disconnect];
}
else{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Ups!"
message:@"Según tu perfil querrías estar desconectado pero como lo estás usando hemos incluido este horario. Para cambiarlo sólo tienes que ir a editar perfil."
delegate:self
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alertView show];
[alertView release];
}
}
-(void)abrirPresencia{
NSLog(@"SOY EL TIMERRRRR!!!! %@");
if (YES){
[self.location stopUpdatingLocation];
[self disconnect];
}
else{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Ups!"
message:@"Según tu perfil querrías estar desconectado pero como lo estás usando hemos incluido este horario. Para cambiarlo sólo tienes que ir a editar perfil."
delegate:self
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alertView show];
[alertView release];
}
}
А это свойство:
@property (nonatomic, retain)NSTimer *myTimer;
Есть идеи?