id与instance的区别 &&动态绑定
来源:互联网 发布:命运之手mac汉化补丁 编辑:程序博客网 时间:2024/06/03 13:44
id类型
id和void *并非完全一样。
id是指向struct objc_object的一个指针,这个意思基本上是说,id是一个指向任何一个继承了Object(或者NSObject)类的对象。需要注意的是id是一个指针,所以你在使用id的时候不需要加星号。比如id foo=nil定义了一个nil指针,这个指针指向NSObject的一个任意子类。而id *foo=nil则定义了一个指针,这个指针指向另一个指针,被指向的这个指针指向NSObject的一个子类。
一、什么是instancetype
instancetype是clang 3.5开始,clang提供的一个关键字,表示某个方法返回的未知类型的Objective-C对象。我们都知道未知类型的的对象可以用id关键字表示,那为什么还会再有一个instancetype呢?
二、关联返回类型(related result types)
根据Cocoa的命名规则,满足下述规则的方法:
1、类方法中,以alloc或new开头
2、实例方法中,以autorelease,init,retain或self开头
会返回一个方法所在类类型的对象,这些方法就被称为是关联返回类型的方法。换句话说,这些方法的返回结果以方法所在的类为类型,说的有点绕口,请看下面的例子:
动态绑定
—在运行时确定要调用的方法
动态绑定将调用方法的确定也推迟到运行时。在编译时,方法的调用并不和代码绑定在一起,只有在消实发送出来之后,才确定被调用的代码。通过动态类型和动态绑定技术,您的代码每次执行都可以得到不同的结果。运行时因子负责确定消息的接收者和被调用的方法。运行时的消息分发机制为动态绑定提供支持。当您向一个动态类型确定了的对象发送消息时,运行环境系统会通过接收者的isa指针定位对象的类,并以此为起点确定被调用的方法,方法和消息是动态绑定的。而且,您不必在Objective-C代码中做任何工作,就可以自动获取动态绑定的好处。您在每次发送消息时,
特别是当消息的接收者是动态类型已经确定的对象时,动态绑定就会例行而透明地发生
- id与instance的区别 &&动态绑定
- instance和id的区别
- java 动态绑定与c++动态绑定区别
- obj-c编程05:类的多态与id动态绑定
- C++的静态绑定与动态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- c++的动态绑定与静态绑定
- java的动态绑定 与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- Java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- 纪念杨先生 今天先转发点 反射 本人正在为优雅的编程努力 所以刚开始都是转发的
- 两点之间最短路径算法(Single-Dijkstra-shortest path)
- HDU 1078 FatMouse and Cheese(记忆化搜索)
- JS转换HTML转义符
- Androguard使用[在santoku上]
- id与instance的区别 &&动态绑定
- Java中HashMap、TreeMap的区别
- [设计模式]一、软件设计概要
- js的replace方法
- 集合之List(2)
- 自定义加载圈动画
- L2-001. 紧急救援-Dijkstra算法的综合运用
- 如何使用Dockerfile构建镜像
- 2. python 参数个数可变的函数