instancesRespondToSelector与respondsToSelector的区别

 

Test1.h

@interface Test1 : NSObject

- (void)objectFun;

+ (void)classFun;

@end

Test1.m

@implementation Test1

- (void)objectFun
{
NSLog(@"object function");
} + (void)classFun
{
NSLog(@"class function");
} @end

测试类:

BOOL flag;

flag = [Test1 instancesRespondToSelector:@selector(objectFun)]; //YES

flag = [Test1 instancesRespondToSelector:@selector(classFun)]; //NO

flag = [Test1 respondsToSelector:@selector(objectFun)]; //NO

flag = [Test1 respondsToSelector:@selector(classFun)]; //YES

Test1 *obj = [[Test1 alloc] init];

flag = [obj respondsToSelector:@selector(objectFun)]; //YES

flag = [obj respondsToSelector:@selector(classFun)]; //NO

总结:

1. instancesRespondToSelector只能写在类名后面,respondsToSelector可以写在类名和实例名后面。

2. [类 instancesRespondToSelector]判断的是该类的实例是否包含某方法,等效于:[该类的实例 respondsToSelector]。

3. [类 respondsToSelector]用于判断是否包含某个类方法

instancesRespondToSelector与respondsToSelector的区别的更多相关文章

  1. performSelector和respondsToSelector用法

    一.performSelector调用和直接调用区别 下面两段代码都在主线程中运行,我们在看别人代码时会发现有时会直接调用,有时会利用performSelector调用,今天看到有人在问这个问题,我便 ...

  2. Swift关于Any,AnyObject,AnyClass的区别与联系

    在Swift语言中,协议定义类或结构体应该遵守的变量和方法集合,如下所示,这个一个标准的协议的声明: protocol NSObjectProtocol { func isEqual(object: ...

  3. Storyboard里面的几种Segue区别及视图的切换:push,modal,popover,replace和custom

    一.视图切换类型介绍 在storyboard中,segue有几种不同的类型,在iphone和ipad的开发中,segue的类型是不同的. 在iphone中,segue有:push,modal,和cus ...

  4. respondsToSelector的使用

    - (BOOL)respondsToSelector:(SEL)aSelector; 用来判断是否有以某个名字命名的方法 +(BOOL) instancesRespondToSelector: sel ...

  5. respondsToSelector的相关使用

    -(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例 -(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的实例 -( ...

  6. oc(object-c)知识汇总/总结/区别对比(持续更新)

    1.判断某个类是否实现了某方法: A *a =[[A alloc] autorelease]; if([a respondsToSelector:@selector(methodName)]){ // ...

  7. id和NSObject *和instanceType的区别与联系

    id 被成为万能指针,也就是可以指向任何对象. NSObject * 本身就是定义指向NSObject类型的指针. 那么这两者有什么区别吗? 这两者都是既可以作为返回值,又可以作为变量修饰.而其主要区 ...

  8. performSelector调用和直接调用的区别

    今天在准备出笔试题的过程中随便搜了一下其他的笔试题,看到其中一个就是关于performSelector与直接调用的区别. 个人感觉这其实是一个陷阱题,因为大部分应用场景下,用哪一种都可以,可以说是没有 ...

  9. iOS中respondsToSelector与conformsToProtocol的相关理解和使用

    respondsToSelector相关的方法 : -(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例 -(BOOL) isMemberOfClass: ...

随机推荐

  1. 利用 canvas 破解 某拖动验证码

    利用 canvas 破解 某拖动验证码 http://my.oschina.net/u/237940/blog/337194

  2. 摘要: Linux下which、whereis、locate、find命令的区别

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索.这些是从网上找到的资料,因为有时很长时间不会用到,当要用的时候经常弄混了,所以放到这里方便使用. which    ...

  3. C#操作XML的方法

    添加命名空间: using System.Xml; 1,先创建一个BookModel类 using System; using System.Collections.Generic; using Sy ...

  4. java并发编程(四)守护进程 线程阻塞的四种情况

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17099981 守护线程   Java中有两类线程:User Thread(用户线程).Da ...

  5. opencv的问题

    opencv中图像文件格式是BRG的顺序 而QImage是RGB形式 H:色彩 S:深浅 s=0 只有灰度 V:明暗

  6. 关于linux开机进入grub问题的解决方法

    用还是用ls (hd0,X)/grub命令查看每个盘里面的内容, 情况一 :如果你是在/boot/grub这个目录下找到的 grub rescue>root=(hd0,9)         gr ...

  7. Struts2 OGNL 自动转换Date类型的一些注意事项

    Strut2 有比较完善的使用OGNL的jsp标签自动转化为对应的后台对象的功能. 这里java.util.Date的自动转化有一些需要注意的地方(局部转换): 1.必须要在struts的xml文件中 ...

  8. IOS 开发教程

    http://www.raywenderlich.com/category/ios http://www.raywenderlich.com/50310/storyboards-tutorial-in ...

  9. java 基础一

    一.Java命名规则 Java命名规则有两种,第一种匈牙利命名要求望名知意,第二种驼峰命名要求首字母大写(关键单词) 类名必须首字母大写,方法名首字母小写后面的单词首字母大写 .类名和方法名要用英文开 ...

  10. mssql java 运行

    public void rlgy() throws IOException { Statement sql; ResultSet rs; String driverName = "com.m ...