Objective-C Language Basic Data Types SEL


Selectors are used as method identifiers in Objective-C.

In the example below, there are two selectors. new and setName:

Person* customer = [Person new];
[customer setName:@"John Doe"];

Each pair of brackets corresponds to a message send. On the first line we send a message containing the new selector to the Person class and on the second line we send a message containing the setName: selector and a string. The receiver of these messages uses the selector to look up the correct action to perform.

Most of the time, message passing using the bracket syntax is sufficient, but occasionally you need to work with the selector itself. In these cases, the SEL type can be used to hold a reference to the selector.

If the selector is available at compile time, you can use @selector() to get a reference to it.

SEL s = @selector(setName:);

And if you need to find the selector at runtime, use NSSelectorFromString.

SEL s NSSelectorFromString(@"setName:");

When using NSSelectorFromString, make sure to wrap the selector name in a NSString.

It is commonly used to check if a delegate implements an optional method.

if ([self.myDelegate respondsToSelector:@selector(doSomething)]) {
    [self.myDelegate doSomething];