Fix retain cycle by setting tableView pointer to weak