-(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 सेट करने की आवश्यकता है।यदि ऑब्जेक्ट को नष्ट किया जा रहा है तो हम डीलोक पर शून्य पर प्रतिनिधि क्यों सेट करते हैं?
मुझे पता है, मेरे पिछले प्रश्न से, कि self.tableView.delegate स्वचालित रूप से शून्य हो जाएगा जब प्रतिनिधि नष्ट हो जाएगा। ऐसा इसलिए है क्योंकि प्रतिनिधि का प्रकार कमजोर संदर्भ के बजाय संदर्भ निर्दिष्ट करता है।
हालांकि, self.tableView के बारे में क्या?
self.tableView के मजबूत संदर्भ के साथ एकमात्र चीज यह पर्यवेक्षण है जिसका स्वामित्व स्वयं और स्वयं itsef है।
तो जब स्वयं नष्ट हो जाता है, self.tableView भी नष्ट किया जाना चाहिए और इसका मतलब है self.tableView.delegate भी चला जाएगा।
तो मुझे self.tableView.delegate=nil
सेट करने की आवश्यकता क्यों है;