【OC学习-16】动态VS静态类型识别?什么是动态绑定和动态加载?

动态VS静态

我们在实例化一个对象时,一般都是如下,就是静态类型:

ASPerson * person=[[ASPerson alloc]init];

还有一种是动态类型:

id person=[[ASPerson alloc]init];

可以看出来:

(1)一般的带有明显类名(静态指针)的都是静态类型,而用id的通用指针的都是动态类型;

(2)静态类型更容易阅读,更友好;

(3)一般不涉及多态的时候,尽量用静态类型。

动态绑定和动态加载

这其实是针对类和对象说得,就是很多事情都不是事先弄好的,而是在程序运行时候才去生成、绑定、加载,就是动态的意思。

具体详细解说见:http://blog.csdn.net/tskyfree/article/details/7984887

这些知识主要是理论性的,可以快速浏览,等开发后再回过来复习可能理解更深入。

时间: 2024-10-08 06:34:35

【OC学习-16】动态VS静态类型识别?什么是动态绑定和动态加载?的相关文章

【转载】C/C++杂记:运行时类型识别(RTTI)与动态类型转换原理

原文:C/C++杂记:运行时类型识别(RTTI)与动态类型转换原理 运行时类型识别(RTTI)的引入有三个作用: 配合typeid操作符的实现: 实现异常处理中catch的匹配过程: 实现动态类型转换dynamic_cast. 1. typeid操作符的实现 1.1. 静态类型的情形 C++中支持使用typeid关键字获取对象类型信息,它的返回值类型是const std::type_info&,例: #include <typeinfo> #include <cassert>

静态代码块 和 main 函数 谁先加载???

学习编程中,当我们遇到问题的时候,如何解决我们的问题? 动手编程,编一个小程序 就很容易 看见自己想要的结果和答案! 今天学习了 static {}  静态代码块,但是 搞不清楚 他和static main() 函数 谁先加载? 于是: 自己编写了一个小段代码: 代码如下: package stu.love.a; public class StaticDemo1 { static { System.out.println("a"); } /** * @param args */ pub

C++杂记:运行时类型识别(RTTI)与动态类型转换原理

运行时类型识别(RTTI)的引入有三个作用: 配合typeid操作符的实现: 实现异常处理中catch的匹配过程: 实现动态类型转换dynamic_cast. 1. typeid操作符的实现 1.1. 静态类型的情形 C++中支持使用typeid关键字获取对象类型信息,它的返回值类型是const std::type_info&,例: #include <typeinfo> #include <cassert> struct B {} b, c; struct D : B {

C/C++杂记:运行时类型识别(RTTI)与动态类型转换原理

运行时类型识别(RTTI)的引入有三个作用: 配合typeid操作符的实现: 实现异常处理中catch的匹配过程: 实现动态类型转换dynamic_cast. 1. typeid操作符的实现 1.1. 静态类型的情形 C++中支持使用typeid关键字获取对象类型信息,它的返回值类型是const std::type_info&,例: #include <typeinfo> #include <cassert> struct B {} b, c; struct D : B {

OC学习16——对象归档

转载自  OC学习篇之---归档和解挡 OC中的归档就是将对象写入到一个文件中,Java中的ObjectInputStream和ObjectOutputStream来进行操作的.当然在操作的这些对象都是需要实现一个接口:Serializable,同样的OC中操作的对象也是需要实现一个协议的,后面会说到. 一.已有类型的归档和解档 首先来看一个简单的例子: 1 // 2 // main.m 3 // 33_ObjectToFile 4 // 5 // Created by jiangwei on

mybatis学习之路(三)别名(typeAliases)mapper接口加载映射文件

一.mybatis默认支持别名 别名 映射的类型 _byte byte _long long _short short _int int _integer int _double double _float float _boolean boolean string String byte Byte long Long short Short int Integer integer Integer double Double float Float boolean Boolean date Da

Java误区: 静态代码块,会在类被加载时自动执行?

JAVA静态代码块会在类被加载时自动执行? 很多Java开发者的思想,被这个思想深深的轮奸了n遍,传播这个错误思想的博客,在网上一堆,越来越多的人被轮奸. 如:http://blog.csdn.net/leeyu35/article/details/7755304 那么我们程序来证明这句话是错误的: class MyClass1 { static {//静态块 System.out.println("static block "); } } public class Main { Cl

引用外部静态库时,(类别)目录方法无法加载问题(转)

这个 bug 在 xcode 4.3 以下会出现,4.3 以后已经修正了. 解决方法为:找到 target 的图标,更改其 Other Linker Flags 为: -all_load 或 -force_load -force_load,后跟随一个文件位置,可以更精确地加载所需文件. 苹果的解释为 : http://developer.apple.com/library/mac/#qa/qa1490/_index.html 简单点说就是,Objective-C 的动态特性使得需要,为链接器添加

metronic 4.5.7开发环境下, 在Windows 10上安装了10.16.0版本的node js之后,导致node sass无法加载

解决办法: 修改metronic 中的package.json文件, 将gulp-sass的依赖项版本改为3.2.1即可解决 { "name": "metronic", "version": "4.5.7", "description": "Metronic by Keenthemes", "main": "gulpfile.js", "