Just set tableView's delegate and dataSource to nil before viewcontroller will be deallocated. For example:
_tableView.delegate = nil;
_tableView.dataSource = nil;
[self.navigationController popViewControllerAnimated:YES];
And in most cases, you should use weak attribute for tableView instead of retain which equals to strong in ARC.