OC中的内省(Introspection)方法
我们在写OC代码的时候经常用到:isKindOfClass: 一类的方法,但是对于它并没有一个了解,这里也是从网上搜索了一些内容,简单介绍并记录一下。这类方法就是属于OC的特性之一:内省。
内省(Introspection):
是面向对象语言和环境的一个强大的特性,OC和Cocoa在这个方法尤其的丰富。内省是对象揭示自己作为一个运行时对象的详细信息的一种能力。这些详细信息包括对象在继承树上的位置,对象是否遵循特定的协议,以及是否可以响应特定的消息。NSObject协议和类定义了很多内省方法,用于查询运行时的信息,以便根据对象的特征进行识别。
下面我们简单介绍几个NSObject的内省方法(项目中也是经常用到):
1.isKindOfClass:
检查对象是否是那个类或者其派生类实例化得对象
2. isMemberOfClass:
检查对象是否是那个类的实例化得对象
3. respondToSelector:
检查对象是否包含这个方法
4. conformsToProtocol:
检查对象是否符合协议,是否实现了协议中所有的必选方法
OC中的内省(Introspection)方法的更多相关文章
- OC中的属性、方法及内存管理
普通方法:关注(代表)对象可以”干什么”,过程中需要实例变量.-(void)show;输出 … 访问属性 属性:属性专门处理实例变量.(程序执行过程当中) 初始化方法:一创建对象(第一时间 ...
- iOS之oc与html之间的交互(oc中调用js的方法)
一.运行的效果图 1.刚开始的效果 2.运行结束后的效果 二.准备工作 1.准备一个html文件导入到oc工程中 2.jiaohu.html文件的原始内容 3.从oc语言中操作.html文 ...
- OC中对象的description方法
周所周知,我们在做项目时, 可以在类的.m文件中重写该类的对象的描述description方法: 示例: -(NSString *)description{ NSString *str = [N ...
- OC中数组的使用方法
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { // 创建数组 NS ...
- OC中的block作方法参数时的用法
方式一.在传参时直接声明block回调方法. 1. 定义方法: - (int)doTest:(NSString *)name success:(int (^)(int param1, int para ...
- OC中数组排序的3种方法
总结OC中数组排序3种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors: 大体上 ...
- OC中加载html5调用html方法和修改HTML5内容
1.利用webView控件加载本地html5或者网络上html5 2.设置控制器为webView的代理,遵守协议 3.实现代理方法webViewDidFinishLoad: 4.在代理方法中进行操作H ...
- OC基础--OC中的类方法和对象方法
PS:个人感觉跟C#的静态方法和非静态方法有点类似,仅仅是有点类似.明杰老师说过不要总跟之前学过的语言做比较,但是个人觉得,比较一下可以加深印象吧.重点是自己真的能够区分开! 一.OC中的对象方法 1 ...
- OC中属性及方法
1.声明式属性 a.实例变量 b.声明属性 自动生成setter/getter方法 .h ->@property 属性类型 属性名; .m ...
随机推荐
- AngularJS+RequireJs实现动态加载JS和页面的方案研究【下】
about.js: [html] view plain copy 在CODE上查看代码片派生到我的代码片 define(['app'], function(app) { app.controller( ...
- Java 之字符串(7)
什么是 Java 中的字符串 在程序开发中字符串无处不在,如用户登陆时输入的用户名.密码等使用的就是字符串.其实,在前面的章节中我们就已经使用了字符串, 例如我们在控制台中输出的 "Hell ...
- javascript的 热点图怎么写
在gis中,你如果用js来写热点图 不借助后台怎么搞,as的话比较容易有相应的类库甚至官方都有.而且用js不借助arcgis发布rest服务,(注:热点图可以借助服务的形式发布,arcgis for ...
- gitlab一次代码回滚引起的bug...
问题描述:线上问题有一个bug,挺严重的.在线下排查后发现是一个之前的同事添加的代码影响的,为了不影响之前的业务,代码回滚了. 但是 过了几天,测人人员测试之后说这个问题又复现了,然后再次看,发现还是 ...
- Oracle Merge Into的用法详解
1. MERGE INTO 的用途 MERGE INTO 是Oracle 9i以后才出现的新的功能.那这个功能 是什么呢? 简单来说,就是:“有则更新,无则插入” ...
- zabbix安装故障点分析
故障点分析:故障一: 2637:20151009:050431.719 [Z3001] connection to database 'zabbix' failed: [1045] Access d ...
- 关于v$rowcache
关于v$rowcache column parameter format a21column pct_succ_gets format 999.9column updates format 999,9 ...
- linux 下MySQL的安装
一.安装MySQL 1.下载源码包 从mysql官网上下载linux下的source包mysql-5.0.51b.tar.gz,注意是下载GNU tar格式的,不是rpm包. 2.解 ...
- rabbitmq集群方案
RabbitMQ的集群方案有以下几种: 1.普通的集群 exchange,buindling再所有的节点上都会保存一份,但是queue只会存储在其中的一个节点上,但是所有的节点都会存储一份queue的 ...
- Spark shuffle调优
1:sparkconf.set("spark.shuffle.file.buffer","64K") --不建议使用,因为这么写相当于硬编码2:在conf/sp ...