I have an object (a UIViewController) which may or may not conform to a protocol I\'ve defined.
I know I can determine if the object conforms to the protocol, then s
The correct way to do this is to do:
if ([self.myViewController conformsToProtocol:@protocol(MyProtocol)])
{
UIViewController *vc = (UIViewController *) self.myViewController;
[vc protocolMethod];
}
The UIViewController type-cast translates to "vc is a UIViewController object that conforms to MyProtocol", whereas using id translates to "vc is an object of an unknown class that conforms to MyProtocol".
This way the compiler will give you proper type checking on vc - the compiler will only give you a warning if any method that's not declared on either UIViewController or is called. id should only be used in the situation if you don't know the class/type of the object being cast.