iOS 之选择器(Selector)

来源:互联网 发布:程序员数学 编辑:程序博客网 时间:2024/04/30 23:51

1 前言

    本文是一篇关于选择器(Selector)的文章,Selector可以理解为一个方法名,具体见下文。

    英文原文:http://blog.csdn.net/developer_zhang/article/details/12188099

    转载请注明出处: http://blog.csdn.net/developer_zhang

2 详述

    Selector是一个对象中用来选择方法来执行的名字,或者是当源代码编译时候用来替换名字的唯一的标示。Selector自己并不能做任何事情。它简单的标示了一个方法。使得selector方法名称不同于普通字符串的唯一的事情是编译器确定selectors是独特的。使得selector有用的是(与运行时结合)它扮演着类似于一个动态函数指针,对于一个已经给与的名字,自动指向类所使用的适用的方法的实现。假设我们有一个run方法的selector,并且类Dog,Athlete和ComputerSimulation(每个类都实现了run方法)。Selector能够被每一个类的实例所使用并且调用它的run方法--设置方法的实现可能是互不相同的。

2.1 如何获得Selector

    被编译的selectors是SEL类型的。有两种方式获得selector:

·在编译期,我们使用编译标示@selector

SEL aSelector = @selector(methodName);

·在运行时,我们使用NSSelectorFromString方法,字符串是方法名:

SEL aSelector = NSSelectorFromString(@"methodName");

 当我们想要我们的代码发送一个知道运行时我们才知道名字的消息的时候,我们使用selector创建一个字符串。

2.2 如何使用Selector

    我们能够调用以selector为参数的performSelector:的方法并且其他类似的方法来使用:

SEL aSelector = @selector(run);[aDog performSelector:aSelector];[anAthlete performSelector:aSelector];[aComputerSimulation performSelector:aSelector];

(我们使用这个技术在特殊的情况下,例如我们实现了一个使用target-action设计模式的对象。通常,我们直接的简单的调用该方法。)

3 结语

    以上是所有内容,希望对大家有所帮助。


0 0