Changed timeout timer from NSTimer to GCD timer to avoid retain cycle.