Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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

like image 538
dontWatchMyProfile Avatar asked Jun 21 '10 05:06

dontWatchMyProfile


3 Answers

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.

like image 146
Sam Dolan Avatar answered Nov 14 '22 09:11

Sam Dolan


Informal Protocol : Category (Implementations are Optional)

Formal Protocol : Extension (Implementations are Optional and required)

like image 37
Rajneesh071 Avatar answered Nov 14 '22 09:11

Rajneesh071


The Objective-C language provides a way to formally declare a list of methods (including declared properties) as a protocol. Formal protocols are supported by the language and the runtime system. For example, the compiler can check for types based on protocols, and objects can introspect at runtime to report whether or not they conform to a protocol.

like image 2
Amol Manwatkar Avatar answered Nov 14 '22 09:11

Amol Manwatkar