Я использую таймаут для RKObjectManager.Мой фрагмент кода выглядит следующим образом:
-(void)getObjects
{
RKObjectManager *sharedManager = [RKObjectManager sharedManager];
[self showLoading];
[sharedManager loadObjectsAtResourcePath:self.resourcePath delegate:self];
// Setting timeout here. goto failure
self.nTimer = [NSTimer scheduledTimerWithTimeInterval:TIMEOUT_INTERVAL target:self selector:@selector(didEncounterError) userInfo:nil repeats:NO];
}
- (void) didEncounterError
{
[self hideLoading];
[self standardErrorHandling];
//invalidate timer, this is done to ensure that if error occurs before timer expiry time, the error will not show again when timer is up (ISSUE HERE)
[self.nTimer invalidate];
}
- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects
{
....
//invalidate timer if load is successful (no issue here)
[self.nTimer invalidate];
}
- (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error
{
....
//trigger encounter error method
[self didEncounterError];
}
В вышеприведенной реализации я всегда аннулирую таймер в методе «ошибка с обнаружением».Это должно смягчить случаи, когда ошибка произошла до истечения таймера.В этом случае я хочу сделать недействительным таймер, чтобы предотвратить повторное появление сообщения об ошибке.
Однако, я все еще получаю сообщение об ошибке во второй раз после того, как ошибка произошла (до истечения таймера).Похоже, что недействительность в методе «ошибка с ошибкой» не сработала.Любой совет, что не так с моим кодом?