Using -performSelector: vs. just calling the method

dynamic-languages, method-dispatch, objective-c, selector

Solution

Basically performSelector allows you to dynamically determine which selector to call a selector on the given object. In other words the selector need not be determined before runtime.

Thus even though these are equivalent:

[anObject aMethod]; 
[anObject performSelector:@selector(aMethod)]; 

The second form allows you to do this:

SEL aSelector = findTheAppropriateSelectorForTheCurrentSituation();
[anObject performSelector: aSelector];

before you send the message.

Problem

I'm still kind of new to Objective-C and I'm wondering what is the difference between the following two statements? ``` [object performSelector:@selector(doSomething)]; [object doSomething]; ```

Original source