currentViewController could be deallocated, use weak