Я видел код вроде:
if (delegate != nil && [delegate respondsToSelector:@selector(doSomething)]) ...
Но, отправляя сообщение в nil, просто возвращает nil (который оценивается как NO), поэтому почему бы просто не сделать:
if ([delegate respondsToSelector:@selector(doSomething)]) ...
Быстрее ли это, если delegate == nil? В любом случае, я предпочитаю, чтобы последние вызывали у него меньше кода.
И, less лучше, чем more. Каждый Unix-профессионал знает об этом.