What’s the difference between formal and informal protocols in Objective-C?

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.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)