-(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;
}
ここで、エラーを避けるためにself.tableView.delegate = nilを設定する必要があります。オブジェクトがとにかく破棄される場合、deallocでdelegateをnilに設定するのはなぜですか?
以前の質問から、デリゲートが破棄されたときにself.tableView.delegateが自動的に無効にならないことは承知しています。これは、代理人のタイプが弱参照の代わりに参照を割り当てるためです。
しかし、self.tableViewについてはどうですか?
self.tableViewを強く参照する唯一のことは、selfとself itsefが所有するsuperviewです。
したがって、selfが破壊されると、self.tableViewも破壊されるはずです。つまり、self.tableView.delegateもなくなります。
なぜ、私はself.tableView.delegate=nil
を設定する必要がありますか。