Selector 概念

转载 2012年03月28日 17:57:08

Selector 概念

简而言之,你可以理解 @selector()就是取类方法的编号,他的行为基本可以等同C语言的中函数指针,只不过C语言中,可以把函数名直接赋给一个函数指针,而Object-C的类不能直接应用函数指针,这样只能做一个@selector语法来取.

    它的结果是一个SEL类型。这个类型本质是类方法的编号(函数地址)?因此我们有如下代码。

一.取得selector值.

C函数指针

int add(int val)
    {
      return val+1;
    }


    int (* c_func)(int val);
//定义一个函数指针变量

    c_func = add ;
//把函数addr地址直接赋给c_func


object-c的选择器,
  

@interface foo
   -(int)add:int val;
   @end


   SEL class_func ;
//定义一个类方法指针

   class_func = @selector(add:int);


  注意1. @selector是查找当前类的方法,而[object @selector(方法名:方法参数..) ] ;是取object对应类的相庆方法.
  注意2.查找类方法时,除了方法名,方法参数也查询条件之一.
  注意3. 可以用字符串来找方法 SEL 变量名 = NSSelectorFromString(方法名字的字符串);
  注意4. 可以运行中用SEL变量反向查出方法名字字符串
       NSString *变量名 = NSStringFromSelector(SEL参数);
        

二.执行selector值.
   取得相庆值后,怎么处理SEL值呢,这一点仍然与函数指针一样,就是执行它
   函数指针执行,(以下有几种等效形式)
     *c_func(10);
     c_func(10);


  SEL变量的执行.用performSelecor方法来执行.
   [对象 performSelector:SEL变量 withObject:参数1 withObject:参数2];
    

三.selector的应用场合
   selector本质是跟C的回调函数一样。主要用于两个对象之间进行松耦合的通讯.这种方法很多开发环境用到。比如GTK,Delphi.基本上整个Cocoa库之间对象,控制之间通讯都是在这个基础构建的。


 

 

探索Android中selector和shape的结合使用

Android中的Selector(背景选择器)主要是用来改变一个按钮控件的背景,在Android UI设计中经常会遇到,比如我们在点击Button时需要有些效果的变化,这时候就要用到和。和对美化控件...
  • qq_20785431
  • qq_20785431
  • 2015年12月06日 21:10
  • 8965

@selector的函数如何传参数/如何传递多个参数

不同的类会有不同的传递方式,参数名也不尽相同。如果是传单个参数的就不用集合,如果是传多个参数可以用类似nsarray,nsdictionary之类的集合传递。看下面例子: 例子1: 通过N...
  • u011862058
  • u011862058
  • 2016年07月07日 14:38
  • 1594

Selector、动画之xml

Android中的Selector主要是用来改变ListView和Button控件的默认背景。 1.创建mylist_view.xml文件 首先在res目录下新建drawable文件夹,再在新建的...
  • ymangu
  • ymangu
  • 2014年06月27日 09:11
  • 1623

swift 中如何使用selector

selector是object-c和swift都有的结构体.swift中的结构体可以像oc中那样使用,但是也有些不同.本文就swifte中selector的操作做了个总结.1.selector结构pu...
  • taishanduba
  • taishanduba
  • 2016年11月20日 12:49
  • 9303

java NIO selector全面深入理解

java NIO selector全面深入理解
  • lw305080
  • lw305080
  • 2016年04月21日 11:13
  • 2883

安卓Selector失效、无用的解决方案

在开发安卓的时候经常会用到selector来为button自动设置背景,selector中有多种item,每个item可以定义一种状态,同时设置这种状态所要显示的图片。 但是在使用的selector中...
  • zfan93
  • zfan93
  • 2016年04月27日 10:10
  • 1278

通俗编程——白话NIO之Selector

Selector简介选择器提供选择执行已经就绪的任务的能力.从底层来看,Selector提供了询问通道是否已经准备好执行每个I/O操作的能力。Selector 允许单线程处理多个Channel。...
  • dd864140130
  • dd864140130
  • 2015年12月14日 19:51
  • 8480

使用代码动态创建Selector

代码如下第一步:创建:/** * Created by developer on 16/10/13. 动态创建Selector */public class CommonUtils { /*...
  • north1989
  • north1989
  • 2016年10月13日 13:18
  • 550

android中Selector中的相关属性及配置写法

android中Selector中的相关属性及配置写法,实现控件的背景及样式的改变
  • xiaoshengyufeng
  • xiaoshengyufeng
  • 2016年09月23日 16:28
  • 1751

Android 关于selector中item顺序的问题

selector常常用于设置按钮等控件在不同状态下的显示,例如默认下的颜色,按下时候的颜色等等,但是需要注意的一点是,selector中各个item的顺序是会影响实际效果,这也是常常有人设置了sele...
  • l403040463
  • l403040463
  • 2017年05月17日 20:15
  • 518
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Selector 概念
举报原因:
原因补充:

(最多只允许输入30个字)