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 NSObj…
Objective-C的本质 1.我们编写的Objective-C,底层现实都是C/C++,代码生成步骤如下:   2.在OC中的所有面向对象的实现,都是基于C/C++的数据结构实现的 3.将Objective-C代码转换为C\C++代码 xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc OC源文件 -o 输出的CPP文件   注:如果需要链接其他框架,使用-framework参数.比如-framework UIKit 一个OC对象在内存中是…
前言 我第一次开始重视Objective-C Runtime是从2014年11月1日,@唐巧老师在微博上发的一条微博开始.   这是sunnyxx在线下的一次分享会.会上还给了4道题目.   这4道题以我当时的知识,很多就不确定,拿不准.从这次入院考试开始,就成功入院了.后来这两年对Runtime的理解慢慢增加了,打算今天自己总结总结平时一直躺在我印象笔记里面的笔记.有些人可能有疑惑,学习Runtime到底有啥用,平时好像并不会用到.希望看完我这次的总结,心中能解开一些疑惑. 目录 1.Runt…
一.Runtime 简介 Runtime 又叫运行时,是一套底层的 C 语言 API,是 iOS 系统的核心之一.开发者在编码过程中,可以给任意一个对象发送消息,在编译阶段只是确定了要向接收者发送这条消息,而接受者将要如何响应和处理这条消息,那就要由运行时来决定了. C 语言中,函数的调用在编译期就会决定调用哪个函数.而 OC 的函数属于动态调用过程,在编译期并不能决定真正调用哪个函数,只有在真正运行时才会根据函数的名称找到对应的函数来调用. Objective-C 是一个动态语言,不仅需要一个…
首先看一下NSObject的定义: @interface NSObject <NSObject> { Class isa OBJC_ISA_AVAILABILITY; } 官方解释:Every object has an isa instance variable that identifies the object's class. The runtime uses this pointer to determine the actual class of the object when i…
看见一到面试题讲述一下Objective-C中的isa?完全没听说过,打算小研究一下. 参考:http://blog.sina.com.cn/s/blog_7a2ffd5c01010nme.html 原来isa类似类似于java中的class,用于动态的获取一个类动态运行时的信息.不过OC比java牛B的是,OC可以在运行时为类添加方法,所以isa比class稍微复杂一点. 看一下NSObject类的.h @interface NSObject <NSObject> { Class isa O…
int main() { Person *p = [[Person alloc] init]; //调用方法 [p test2]; [p performSelector:@selector(test2)]; ; } #import "Person.h" @implementation Person + (void)test { NSLog(@"test-----"); } - (void)test2 { // _cmd代表着当前方法 NSString *str =…
最近在找工作,Objective-C中的Runtime是经常被问到的一个问题,几乎是面试大公司必问的一个问题.当然还有一些其他问题也几乎必问,例 如:RunLoop,Block,内存管理等.其他的问题如果有机会我会在其他文章中介绍.本篇文章主要介绍RunTime. RunTime简称运行时.就是系统在运行的时候的一些机制,其中最主要的是消息机制.对于C语言,函数的调用在编译的时候会决定调用哪个函数( C语言的函数调用请看这里 ).编译完成之后直接顺序执行,无任何二义性.OC的函数调用成为消息发送…
OC 是面向运行时的语言.Runtime就是系统在运行的时候的一些机制,其中最主要的是消息发送机制.OC语言与其他语言(如C语言)在函数(方法)的调用有很大的不同.C语言,函数的调用在编译的时候就已经决定调用哪个函数,编译完成之后直接顺序执行.而对于OC言,方法的调用则不然,在编译的时候不决定调用哪个方法.因为OC的方法调用是消息发送,属于动态调用过程,只有在真正运行的时候才会根据方法的名称找到对应的方法来调用. OC是怎么实现动态调用的呢? [obj start]; obj是对象,start是…
http://blog.ibireme.com/2013/11/25/objc-object/ Objective-C的runtime是开源的,源码可以在苹果官网下载到:objc4. 在objc4-532.2以后,苹果把NSObject的实现也挪进来了.想要了解NSObject底层实现终于不用去抠GNUstep了- 好了,下面正文: 1.id和Class的定义 runtime里面,声明了id和Class的类型,简化一下如下:   1 2 3 4 5 6 7 8 9 struct objc_cla…