Is there any way to avoid this kind of code when overwriting the default setter for a retain property?
-(void)setMasterViewController:(UIViewController *)newMaster {
[newMaster retain];
[masterViewController release];
masterViewController = newMaster;
// do custom stuff on set
}
Is there any way to access the default setter, something like:
-(void)setMasterViewController:(UIViewController *)newMaster {
[defaultSetMasterViewController:newMaster];
// do custom stuff
}
This would keep the code DRYer. The way I’m doing it currently, the fact that it’s a retain property is mentioned twice.
CoreData generates primitive setters, but in general there’s no such affordance. You may be able to replace custom setters with key-value observing in some cases, but the solution to your specific question is probably “use ARC” if you can limit support to 10.6+/4.3+. It will handle the retain/release stuff on your behalf.