Some Cocoa and Cocoa Touch classes declare their delegate properties as assign rather than weak, which forces users of the class to nil out the property in dealloc
-(void)dealloc
{
self.imageScrollView.delegate = nil;
self.tableView.delegate = nil;
self.tableView.dataSource = nil;
}
Which is very cumbersome.
Why would Apple do it this way?
The reason why is that not all system classes have been compiled with ARC.
See this page on developer.apple.com: Transitioning to ARC Release Notes