Selectors are used to obtain the method implementation of an object.
For example, almost every object implements the description
method even if it inherits the implementation from its superclass. A function pointer can only point to one particular implementation of description
(e.g. it can only point to NSString's version, or NSNumber's version, but not both). You can't take the function pointer of one class's description
implementation and use it for every class, but you can use the same description
selector, and it doesn't matter what object you use as the target, the right method implementation will always be used.