From Official Documentation
Formal and Informal Protocols
There are two varieties of protocol,
formal and informal:
An informal protocol is a category on NSObject, which implicitly
makes almost all objects adopters of
the protocol. (A category is a
language feature that enables you to
add methods to a class without
subclassing it.) Implementation of the
methods in an informal protocol is
optional. Before invoking a method,
the calling object checks to see
whether the target object implements
it. Until optional protocol methods
were introduced in Objective-C 2.0,
informal protocols were essential to
the way Foundation and AppKit classes
implemented delegation.
A formal protocol declares a list of methods that client classes
are expected to implement. Formal
protocols have their own declaration,
adoption, and type-checking syntax.
You can designate methods whose
implementation is required or optional
with the @required and @optional
keywords. Subclasses inherit formal
protocols adopted by their ancestors.
A formal protocol can also adopt other
protocols.
Formal protocols are an extension to
the Objective-C language.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…