What is Selector?

翻译自这里

selector 是一个对象(object)选择执行某个方法的名称,或者是代码编译后用来唯一标识一个方法。selector 自己不能做任何事,它只是定义了一个方法。selector 与普通字符串的区别就是编译器确保它是唯一的。它只有在运行时扮演类似动态方法指针的角色,也就是正确指向一个类的实现文件中的方法。
例如,你创建了 run 方法,和 Dog, Athlete, ComputerSimulation 这些类,并且这些类都实现了 run 方法。对象可以通过 selector 调用各自的 run 方法。

获取 selector

SELselector 编译后的类型,通常有两种方式获取 selector:

  • 在编译时期,用 @selector
    SEL aSelector = @selector(methodName);
  • 在运行时期,用 NSSelectorFromString 这个方法
    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.
使用 selector

你可以通过 performSelector: 或其它类似的方法来调用一个方法

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.)

你可能感兴趣的:(What is Selector?)