When you instantiate NSTimer, do you set self (vcC) as its target? If so then you need to invalidate your timer or else vcC won't be released. I don't know how familiar you are with ARC, but when you set vcC as NSTimer's target, vcC's retain count is added by 1