You use it pretty much just when you think you need to: to check to see if an object implements the method you are about to call. Usually this is done when you have an optional methods or an informal protocol.
I’ve only ever used respondsToSelector
when I’m writing code that must communicate with a delegate object.
if ([self.delegate respondsToSelector:@selector(engineDidStartRunning:)]) {
[self.delegate engineDidStartRunning:self];
}
You sometimes would want to use respondsToSelector
on any method that returns and id
or generic NSObject
where you aren’t sure what the class of the returned object is.