3

I have something like this:

My rootViewController is a navigationBar - let this be A. The rest are normal UIViewControllers, and are programmatically segue via push (through a button IBAction method).

Flow diagram

However going from D -> A, I use unwind segue (also via performSegueWithIdentifier:sender:).

The issue here is that when the segue is performed, B, C and D are not deallocatedat all. Not only is this causing a memory leak issue but my timers are still running. I'm not sure why this is the case. I thought unwind segues are suppose to handle all these for you? Any idea why?

Kampai
  • 22,848
  • 21
  • 95
  • 95
CyberMew
  • 1,159
  • 1
  • 16
  • 33

2 Answers2

3
-(void)viewWillDisappear:(BOOL)animated{
    [timer invalidate];
    timer = nil;
}

Hope this will help you...for timer invalidate on other controller

Kampai
  • 22,848
  • 21
  • 95
  • 95
Arvind Kumar
  • 2,371
  • 1
  • 18
  • 25
2

The issue is with the NSTimer.

NSTimer retain their target. So if a view controller starts a timer with target:self, it will not be deallocated as long as the timer is running.

You can get more information here

Community
  • 1
  • 1
Midhun MP
  • 103,496
  • 31
  • 153
  • 200