Retired Document
Important: This document may not represent best practices for current development. Links to downloads and other resources may no longer be valid.
Selector
A selector is the name used to select a method to execute for an object, or the unique identifier that replaces the name when the source code is compiled. A selector by itself doesn’t do anything. It simply identifies a method. The only thing that makes the selector method name different from a plain string is that the compiler makes sure that selectors are unique. What makes a selector useful is that (in conjunction with the runtime) it acts like a dynamic function pointer that, for a given name, automatically points to the implementation of a method appropriate for whichever class it’s used with. Suppose you had a selector for the method run
, and classes Dog
, Athlete
, and ComputerSimulation
(each of which implemented a method run
). The selector could be used with an instance of each of the classes to invoke its run
method—even though the implementation might be different for each.
Getting a Selector
Compiled selectors are of type SEL
. There are two common ways to get a selector:
At compile time, you use the compiler directive
@selector
.SEL aSelector = @selector(methodName);
At runtime, you use the
NSSelectorFromString
function, where the string is the name of the method:SEL aSelector = NSSelectorFromString(@"methodName");
You use a selector created from a string when you want your code to send a message whose name you may not know until runtime.
Using a Selector
You can invoke a method using a selector with performSelector:
and other similar methods.
SEL aSelector = @selector(run); |
[aDog performSelector:aSelector]; |
[anAthlete performSelector:aSelector]; |
[aComputerSimulation performSelector:aSelector]; |
(You use this technique in special situations, such as when you implement an object that uses the target-action design pattern. Normally, you simply invoke the method directly.)
Copyright © 2018 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2018-04-06