(if I understood fine your question):

because ObjC uses informal protocols to define delegates, and an informal protocol might or might not be complete (it just define a collection of methods that you might have). 
is informal because user could want to define just a part of the protocol (in the example, just windowShouldClose:) and not the many objects the delegate protocol defines. 
and it is not an abstract class with empty methods because then you force user to extend a particular class (and you cannot not use any arbitrary object as a delegate)

Esteban

ps: is possible that Cocoa uses delegates and we can use just blocks� I don�t know� but the delegating idea is to not pollute apps with thousands of subclasses of widgets with minimal variations (like something we know) :)

On 16 Jul 2014, at 10:48, stepharo <stepharo@free.fr> wrote:

Hi

In the quest for a better UI framework :), I was re rereading about delegate in Cocoa.
A delegating object will delegate certain operations to a delegate object (check the attachment).
Now I was wondering why this is not a simple delegation they wrote:

The delegating object sends a message only if the delegate implements the method. It makes this discovery by invoking the NSObject method respondsToSelector: in the delegate first.

Cocoa Fundamentals Guide (TP40002974 6.0.0)

<Screen Shot 2014-07-16 at 10.47.04.pdf>