isa class superclass metaclass
http://www.cnblogs.com/feng9exe/p/7232915.html
Note: 其实这里的难点就在于对 和 的区分。
- .class 当 target 是 Instance 则返回 Class,当 target 是 Class 则返回自身
- object_getClass 返回 指针的指向
ViewController: 0x10deee650, ViewController, 0
ViewController: 0x10deee678, NSObject, 1
NSObject: 0x10ef8cee8, NSObject, 1
NSObject: 0x10ef8cee8, NSObject, 1
ViewController
UIViewController
UIResponder
NSObject
ViewController: 0x10deee650, ViewController, 0
ViewController: 0x10deee650, ViewController, 0
Class currentClass = object_getClass(self);
Class nextClass = object_getClass(currentClass);
Class superClass = class_getSuperclass(currentClass);
Class xClass = self.class;
int k = 0;
do {
NSLog(@"%@:\t%p,\t%s,\t%zd",NSStringFromClass(currentClass),currentClass,object_getClassName(currentClass),class_isMetaClass(currentClass));
currentClass = nextClass;
nextClass = object_getClass(currentClass);
}while (k++ < 4);
NSLog(NSStringFromClass(self.class));
while (superClass != NULL) {
NSLog(NSStringFromClass(superClass));
superClass = class_getSuperclass(superClass);
}
k = 0;
do {
NSLog(@"%@:\t%p,\t%s,\t%zd",NSStringFromClass(xClass),xClass,object_getClassName(xClass),class_isMetaClass(xClass));
xClass = xClass.class;
//nextClass = object_getClass(currentClass);
}while (k++ < 3);
isa class superclass metaclass的更多相关文章
- 【OC底层】OC对象本质,如 isa, super-class
Objective-C的本质 1.我们编写的Objective-C,底层现实都是C/C++,代码生成步骤如下: 2.在OC中的所有面向对象的实现,都是基于C/C++的数据结构实现的 3.将Obje ...
- 神经病院Objective-C Runtime入院第一天——isa和Class
前言 我第一次开始重视Objective-C Runtime是从2014年11月1日,@唐巧老师在微博上发的一条微博开始. 这是sunnyxx在线下的一次分享会.会上还给了4道题目. 这4道题 ...
- iOS isa 和 Class
一.Runtime 简介 Runtime 又叫运行时,是一套底层的 C 语言 API,是 iOS 系统的核心之一.开发者在编码过程中,可以给任意一个对象发送消息,在编译阶段只是确定了要向接收者发送这条 ...
- NSObject中的isa到底是个什么?
首先看一下NSObject的定义: @interface NSObject <NSObject> { Class isa OBJC_ISA_AVAILABILITY; } 官方解释:Eve ...
- iOS isa 浅析
看见一到面试题讲述一下Objective-C中的isa?完全没听说过,打算小研究一下. 参考:http://blog.sina.com.cn/s/blog_7a2ffd5c01010nme.html ...
- SEL-消息机制
int main() { Person *p = [[Person alloc] init]; //调用方法 [p test2]; [p performSelector:@selector(test2 ...
- Objective-C总Runtime的那点事儿(一)消息机制
最近在找工作,Objective-C中的Runtime是经常被问到的一个问题,几乎是面试大公司必问的一个问题.当然还有一些其他问题也几乎必问,例 如:RunLoop,Block,内存管理等.其他的问题 ...
- OC Runtime
OC 是面向运行时的语言.Runtime就是系统在运行的时候的一些机制,其中最主要的是消息发送机制.OC语言与其他语言(如C语言)在函数(方法)的调用有很大的不同.C语言,函数的调用在编译的时候就已经 ...
- Objective-C 中的类和对象
http://blog.ibireme.com/2013/11/25/objc-object/ Objective-C的runtime是开源的,源码可以在苹果官网下载到:objc4. 在objc4-5 ...
随机推荐
- Dubbo下载-从missing artifactId说起
项目pom文件引入dubbo 报 missing artifactId https://github.com/dangdangdotcom/dubbox 从GitHub上直接下载解压包, 最好下载分支 ...
- 针对Eclipse闪退的两种解决方案
闪退情况是:双击Eclipse登陆按钮,显示图标后,紧接着关闭: 1. 到eclipse文件夹中的eclipse.ini打开编辑在最后加入下面代码保存即可 -Dorg.eclipse.swt.brow ...
- Centos7初次开机提示Initial setup of CentOS Linux 7 (core)
安装完成centos7后出现如下提示: Initial setup of CentOS Linux 7 (core) 1) [x] Creat user 2) [!] License informat ...
- mysql根据经纬度求两地距离
#1.两点距离(1.4142135623730951) ,),point(,)); select st_distance(point (120.10591, 30.30163),point(120.1 ...
- 高并发第十一弹:J.U.C -AQS(AbstractQueuedSynchronizer) 组件:Lock,ReentrantLock,ReentrantReadWriteLock,StampedLock
既然说到J.U.C 的AQS(AbstractQueuedSynchronizer) 不说 Lock 是不可能的.不过实话来说,一般 JKD8 以后我一般都不用Lock了.毕竟sychronize ...
- Java Web中涉及的编解码
用户从浏览器发起一个HTTP请求,存在编码的地方是URL.Cookie.Paramiter.服务器端接收到HTTP请求后要解析HTTP协议,其中URL.Cookie和POST表单参数要解码,服务器端可 ...
- linux命令更改服务器时间
1. linux更改服务器时间: 权限:root用户才有权限更改服务器时间 使用date命令即可设置系统时间. 2. 查看系统时间 date 3. 设置当前系统时间为2015年5月8日19点48分0秒 ...
- 关于java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap的错误解决办法
在JavaEE开发中,在把配置文件中的数据或用户表单提交上来的数据,封装在相应JavaBean的对象的对应属性中时:在实际开发中,使用第三方法工具包BeanUtils(commons-beanutil ...
- 镶嵌数据集 Mosaic Dataset 的常见数据组织方式
镶嵌数据集是ESRI公司推出一种用于管理海量影像数据的数据模型,定义在GeoDatabase数据模型中. 它的常见数据组织方式有两种: 1. 源镶嵌数据集 Source Mosaic Dataset ...
- Spring Boot—21Actuator--监控
https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/ pom.xml <dependency&g ...