Objective-C: Why check nil before respondsToSelector:?
问题 I've seen code like: if (delegate != nil && [delegate respondsToSelector:@selector(doSomething)]) ... But, sending a message to nil just returns nil (which evaluates to NO ), so why not just do: if ([delegate respondsToSelector:@selector(doSomething)]) ... Is the former faster if delegate == nil ? Either way, I prefer the latter cause it's less code. And, less is better than more . Every Unix pro knows that. 回答1: objc_msgSend, the function used to send dynamic messages in Objective-C