-(void) scrollViewDidScroll:(UIScrollView *)scrollView
{
PO(NSStringFromCGPoint(self.tableView.contentOffset));
PO(NSStringFromUIEdgeInsets(self.tableView.contentInset));
while(false);
}
-(void)dealloc
{
PO(NSStringFromClass([self class]));
PO(@"Deallocated");
self.tableView.delegate=nil;
}
Qui ho bisogno di impostare self.tableView.delegate = nil per evitare errori.Perché impostiamo il delegato su nil su dealloc se l'oggetto verrà distrutto comunque?
Sono consapevole, dalla mia domanda precedente, che self.tableView.delegate non diventerà automaticamente nill quando il delegato viene distrutto. Questo perché il tipo di delegato assegna il riferimento anziché il riferimento debole.
Tuttavia, che dire di self.tableView?
L'unica cosa con un forte riferimento a self.tableView è la superview che appartiene a self e self itsef.
Quindi quando self viene distrutto, anche self.tableView dovrebbe essere distrutto e ciò significa che anche self.tableView.delegate sarà eliminato.
Quindi, perché è necessario impostare self.tableView.delegate=nil
;