Object C函数指针@selector

其做用至关于函数指针,如今我看到的大多说用法都是在调用某些函数须要传递一个 函数指针 参数时,使用@selector。它会在当前类里面查找selector后面所跟的函数,返回一个SEL类型的值。函数

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

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

在调用respondsToSelector:@selector(method)时,这个method只有在该方法存在参数时须要 ":",若是该方法不须要参数就不须要加这个冒号。不然,编译不会报错,只是执行返回的值不对。固然若是方法有多个参数,须要多个冒号,参数有名称的须要带上参数名称。orm

如:有以下方法:对象

-(NSString*)toXmlString;blog

此时调用相似于:get

[self respondsToSelector:@selector(toXmlString)]博客

若是toXmlString方法的定义为:it

-(NSString*)toXmlString:(NSString*)prefix;编译

那么调用就必须加上冒号,如:[self respondsToSelector:@selector(toXmlString:)]

  • -(BOOL) isKindOfClass: classObj 用来判断是不是某个类或其子类的实例
  • -(BOOL) isMemberOfClass: classObj 用来判断是不是某个类的实例
  • -(BOOL) respondsToSelector: selector 用来判断是否有以某个名字命名的方法(被封装在一个selector的对象里传递)
  • +(BOOL) instancesRespondToSelector: selector 用来判断实例是否有以某个名字命名的方法. 和上面一个不一样之处在于, 前面这个方法能够用在实例和类上,而此方法只能用在类上.
  • -(id) performSelector: selector 执行某个方法

 

本文出自 “人生得意须尽欢” 博客,请务必保留此出处http://no001.blog.51cto.com/1142339/643237

相关文章
相关标签/搜索