浅思OC的语言的动态特性
来源:互联网 发布:程序员常用编辑器 编辑:程序博客网 时间:2024/06/02 00:04
浅思OC的语言特算了算,学习IOS已经有一段时间了。今天花了点时间思考一下OC的语言特性,让自己的心不要那么浮躁,注重基础,回归本源。
OC做为一门面向对象语言,自然具有面向对象的语言特性,如封装、继承、多态。他具有静态语言的特性(如C++),又有动态语言的效率(动态绑定、动态加载等)。整体来说,确实是一门不错的编程语言。
现在,让我来想想OC的动态语言特性。OC的动态特性表现为了三个方面:动态类型、动态绑定、动态加载。之所以叫做动态,是因为必须到运行时(run time)才会做一些事情。
(1)动态类型
动态类型,说简单点就是id类型。动态类型是跟静态类型相对的。像内置的明确的基本类型都属于静态类型(int、NSString等)。静态类型在编译的时候就能被识别出来。所以,若程序发生了类型不对应,编译器就会发出警告。而动态类型就编译器编译的时候是不能被识别的,要等到运行时(run time),即程序运行的时候才会根据语境来识别。所以这里面就有两个概念要分清:编译时跟运行时。
(2)动态绑定
动态绑定(dynamic binding)貌似比较难记忆,但事实上很简单,只需记住关键词@selector/SEL即可。先来看看“函数”,对于其他一些静态语言,比如c++,一般在编译的时候就已经将将要调用的函数的函数签名都告诉编译器了。静态的,不能改变。而在OC中,其实是没有函数的概念的,我们叫“消息机制”,所谓的函数调用就是给对象发送一条消息。这时,动态绑定的特性就来了。OC可以先跳过编译,到运行的时候才动态地添加函数调用,在运行时才决定要调用什么方法,需要传什么参数进去。这就是动态绑定,要实现他就必须用SEL变量绑定一个方法。最终形成的这个SEL变量就代表一个方法的引用。这里要注意一点:SEL并不是C里面的函数指针,虽然很像,但真心不是函数指针。SEL变量只是一个整数,他是该方法的ID。以前的函数调用,是根据函数名,也就是字符串去查找函数体。但现在,我们是根据一个ID整数来查找方法,整数的查找字自然要比字符串的查找快得多!所以,动态绑定的特定不仅方便,而且效率更高。
(3)动态加载
比如图片的动态加载:
就是把图片(或者图片路径)存在数据库里,在要显示图片的地方,从数据库里调出图片来显示出来,
由于数据库随时在更新,图片就会不一样,就称为动态就是根据需求动态地加载资源。
- 浅思OC的语言的动态特性
- 浅思OC的语言的动态特性
- 浅思OC的语言特性
- 浅思OC的语言特性
- OC的动态特性
- OC的动态特性_随手笔记
- OC语言--类的三大特性
- 2017-01-09 笔记 OC动态语言特性以及与C的对比 上
- 2017-01-09 笔记 OC动态语言特性以及与C的对比 下
- OC 语言的特性和OC/C/C++ 比较
- 动态语言,静态语言,以及OC的语言类型
- 【OC】@property的特性
- OC基础10:基本的C语言特性1
- OC基础11:基本的C语言特性2
- 面试题——OC的语言特性
- OC动态特性
- OC--继承的相关特性
- OC语言的特点
- 从网上读取图片在本地显示
- ADNROID/JAVA/SSH/Oracle+MySQl+SQLServer/jQuery/Ajax等等 优质学习资料免费下砸
- c++迭代器
- 程序人生--2009年(56)
- HTML 学习笔记(五)a:link……visited……hover……active……
- 浅思OC的语言的动态特性
- JavaScript巧解IE6与IE8兼容性问题
- linux的一些资源,pdf,源码光盘
- GRUB2
- 逻辑卷管理器(英语:Logical Volume Manager,缩写为LVM)简介
- sql server 跨实例访问数据库
- java基础———第五天
- usb简单介绍
- 特殊SQL1