电子商务网站推广实训报告,云南站群网站建设,浏阳网站建设,北京市招标网Object-C 中的Selector 概念 Andrew Huang bluedrum163.com 转载请注明作者和联络方式 在iphone程序中会大量看到selector这样的用法。iphone开发基础花了很大一个篇幅来解析这个语法#xff0c;但是不知 是翻译问题#xff0c;还是解释过细#xff0c…Object-C 中的Selector 概念 Andrew Huang bluedrum163.com 转载请注明作者和联络方式 在iphone程序中会大量看到selector这样的用法。iphone开发基础花了很大一个篇幅来解析这个语法但是不知 是翻译问题还是解释过细不大看得懂很是不给力.直到程序用这个语法并且仔细看了一些解析文章。才明白这一语法。 简而言之你可以理解 selector()就是取类方法的编号,他的行为基本可以等同C语言的中函数指针,只不过C语言中可以把函数名直接赋给一个函数指针而Object-C的类不能直接应用函数指针这样只能做一个selector语法来取. 它的结果是一个SEL类型。这个类型本质是类方法的编号(函数地址)?因此我们有如下代码。 一.取得selector值. C函数指针 int add(int val) { return val1; } 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的回调函数一样。主要用于两个对象之间进行松耦合的通讯.这种方法很多开发环境用到。比如GTKDelphi.基本上整个Cocoa库之间对象控制之间通讯都是在这个基础构建的。 转http://chinaxxren.iteye.com/blog/1156909 -(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例-(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的实例-(BOOL) respondsToSelector: selector 用来判断是否有以某个名字命名的方法(被封装在一个selector的对象里传递)(BOOL) instancesRespondToSelector: selector 用来判断实例是否有以某个名字命名的方法. 和上面一个不同之处在于, 前面这个方法可以用在实例和类上而此方法只能用在类上.-(id) performSelector: selector 执行某个方法转载于:https://www.cnblogs.com/GnagWang/archive/2011/12/05/2276559.html