objective-c 编程基础(3.9 @selector)

@selector是什么?

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

取@selector的值

@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值呢,这一点仍然与函数指针一样,就是执行它。

SEL变量的执行.用performSelecor方法来执行.

[对象 performSelector:SEL变量 withObject:参数1 withObject:参数2]; 

@selector的使用场合

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

猜你喜欢

转载自blog.csdn.net/yx1166/article/details/79920471
今日推荐