-(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;
}
Hier muss ich self.tableView.delegate = nil setzen, um Fehler zu vermeiden.Warum setzen wir den Delegaten bei dealloc auf null, wenn das Objekt trotzdem zerstört wird?
Ich bin mir bewusst, von meiner vorherigen Frage, dass self.tableView.delegate wird nicht automatisch Null, wenn der Delegat zerstört wird. Das liegt daran, dass der Typ des Delegaten eine Referenz anstelle einer schwachen Referenz zuweist.
Was ist jedoch mit self.tableView?
Die einzige Sache mit starkem Verweis auf self.tableView ist es Superview, das von Selbst- und Selbstbesitz gehört.
Also wenn self zerstört wird, sollte self.tableView auch zerstört werden und das bedeutet, dass self.tableView.delegate auch weg ist.
Also warum muss ich self.tableView.delegate=nil
setzen;