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 ...
随机推荐
- cef3加载flash闪烁问题非easyhook的另外一种解决方法
1.现象 cef3加载flash,会出现弹出命令行窗口,显示not sandboxed,影响使用体验. 网上的解决方法,参考此文. http://blog.csdn.NET/zx2356/articl ...
- 项目托管到Github上
一.注册github账号 首先需要注册一个github账号,注册地址:https://github.com 接着会来到这 然后会收到一封github发的邮件,进入邮箱验证 二.创建个人的githu ...
- Qt架构图及模块分析介绍
1.Qt框架图: 2.Qt模块组成 通用软件开发模块 QtCore 核心非图形接口类,为其他模块所调用 QtGui GUI(图形用户接口)功能模块 QtMultimedia 提供低级多媒体功能支持的类 ...
- JavaScript standard 代码规范的全文
这是 JavaScript standard 代码规范的全文. 掌握本规范的最好方法是安装并在自己的代码中使用它. 细则 使用两个空格进行缩进. eslint: indent function hel ...
- ios虚拟机安装 (三)
安装mac系统出现欢迎使用的界面-->一直继续(个人设定) 点击左上角-->Dock-->启动放大 Safari 浏览器
- Android Apk增量更新
前言 有关APK更新的技术比较多,例如:增量更新.插件式开发.热修复.RN.静默安装. 下面简单介绍一下: 什么是增量更新? 增量更新就是原有app的基础上只更新发生变化的地方,其余保持原样. 与 ...
- redis mysql验证 redis_mysql_check.py
# coding:utf-8 import pymysql import redis import sys def con_mysql(sql): db = pymysql.connect(host= ...
- 结对编程的感想&收获
关于结对编程的感想.感受,见我的另一篇随笔——<构建之法>结对编程 感想 下面我来谈谈本次结对编程的收获以及发现的问题 收获 ①这是我人生中第一次做UI界面设计,刚拿到这个题目还是比较 ...
- zabbix使用问题
1中文乱码 https://www.linuxidc.com/Linux/2017-08/146162.htm 软件 说明 备注 zabbix 3.4.7 操作系统 Centos7 问题描述:图表内容 ...
- SQLSERVER中KeyHashValue的作用(上)
SQLSERVER中KeyHashValue的作用(上) SQLSERVER中KeyHashValue的作用(下) 原文的标题是:SQLSERVER在索引下如何找到哈希值的随想 现在知道KeyHash ...