NSObject是OC中的基类,全部类都继承于此,这里面也给我们提供了非常多与“类”和“方法”相关的方法,本文将解说几个非常有用的方法。

正文:


Person.h

#import <Foundation/Foundation.h>
@interface Person : NSObject
@end</span>

Student.h

#import "Person.h"
// 继承Person类
@interface Student : Person
- (void)test1;
- (void)test2:(NSString *)string;
@end</span>

MyProtocol.h

#import <Foundation/Foundation.h>
@protocol MyProtocol
@end</span>

【1】推断student是否是Person类的对象

// - (BOOL)isMemberOfClass:(Class)aClass;
[student isMemberOfClass:[Person class]];

【2】推断student是否是Person类或子类的对象
// - (BOOL)isKindOfClass:(Class)aClass;
[student isKindOfClass:[Person class]];

【3】推断student是否遵循MyProtocol协议(也能够用类调用,推断该类是否遵循)
// - (BOOL)conformsToProtocol:(Protocol *)aProtocol;
[student conformsToProtocol:@protocol(MyProtocol)]; // 或者使用类方法
// + (BOOL)conformsToProtocol:(Protocol *)protocol;
[Student conformsToProtocol:@protocol(MyProtocol)];

【4】推断student的test1方法是否响应(即:是否声明并实现了test1方法)
// - (BOOL)respondsToSelector:(SEL)aSelector;
[student respondsToSelector:@selector(test1)];

【5】间接调用student的test1方法(test1无參数)
// - (id)performSelector:(SEL)aSelector;
[student performSelector:@selector(test1)];

【6】间接调用student的test2方法(test2有一个參数)
// - (id)performSelector:(SEL)aSelector withObject:(id)object;
[student performSelector:@selector(test2:) withObject:@"123"]; // 最多带两个參数
//- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;

【7】延迟2s调用student的test1方法

(在命令行没有延迟效果,由于命令行运行完后就退出main函数了 ,在IOS部分main函数一直在运行。所以能够看到延迟效果)

<span style="font-family:SimHei;">// - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;
// delay单位为(秒)
[student performSelector:@selector(test2:) withObject:@"123" afterDelay:2];</span>

最新文章

  1. SQL 两种表复制语句
  2. jni数据传递——会不断的更新,测试没有问题,再整理进来。
  3. vim 显示当前文件名 缩进设置 常用设置
  4. uploadify scriptData参数无法传参的问题
  5. 发布后500访问错误 —— dll引用错误
  6. ASP.NET MVC- 使用PageList.Mvc分页
  7. Flex布局新旧混合写法详解(兼容微信)
  8. Java集合类之向量Vector
  9. css去除webkit内核的默认样式
  10. PBOC规范研究
  11. 四则运算 WEB
  12. C语言实现整数和16进制互相转换
  13. [SHOI2011]双倍回文
  14. java的io库用到的装饰模式是如何体现的?
  15. 【Teradata】grouping和rollup窗口函数
  16. (原)caffe中的conv
  17. Git-简单的利用SourceTree提交代码(转载)
  18. hdu5335(bfs,贪心)
  19. mysql 数据库或者表空间使用查询
  20. BZOJ2987:Earthquake(类欧几里德算法)

热门文章

  1. UE4 集成讯飞听写插件
  2. node 搭建本地服务器
  3. JS——样式获取的兼容写法
  4. 六时出行 App iOS隐私政策
  5. TCP:三次握手,URG、ACK、PSH、RST、SYN、FIN 含义
  6. 最基础的rpm命令
  7. 如何区分null和undefined
  8. python的转义字符及用法详解
  9. 洛谷 1486 郁闷的出纳员【Treap】
  10. BZOJ 2754 [SCOI2012]喵星球上的点名 (AC自动机、树状数组)