This recent question got me thinking about category conflicts, specifically involving the UIViewControllerRotation
category within UIViewController.h
. This category includes the shouldAutorotateToInterfaceOrientation:
. If one wanted to override this method (via a category) and make it run the same code for every UIViewController
(as the linked post is trying to accomplish) then they'd have two categories with the same method - something that I read leads to undefined behavior.
I gave this a try and, for a standard view-based application in iOS 4.3, the rotation logic fell back to the default, portrait only rotation, effectively ignoring the category. This was with no shouldAutorotateToInterfaceOrientation:
method defined in my UIViewController
subclass. Interestingly, when I did define the shouldAutorotateToInterfaceOrientation:
method and simply called return [super shouldAutorotateToInterfaceOrientation:]
then the category was called. So this leaves me with two question:
- Are all bets off (behavior-wise) when you have conflicting category methods?
- Is one out of luck if they wanted to override a category method w/ out inheritance?
Any feedback is much appreciated! Thanks.