1:动态类型(Dynamic typing),动态绑定(Dynamic binding)和动态加载(Dynamic loading)。

动态类型:即运行时再决定对象的类型。简单说就是id类型。id类型即通用的对象类,任何对象都可以被id指针所指。

动态绑定:动态绑定确定该对象对应的属性和响应的消息。

动态加载:加载资源。

  • oc作为一门面向对象的语言,自然具有面向对象的语言特性:封装、继承、多态。它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定,动态加载)。总体来讲,OC确实是一门不错的编程语言。

  • Object-C具有相当多的动态特性,表现为三个方面:动态类型(Dynamic typing)、动态绑定(Dynamic binding)和动态加载(Dynamic loding)。动态--必须到运行时(run time)才会做的一些事情。

  • 动态类型:即运行时在决定对象的类型,这种动态特性在日常的应用中非常的常见,简单来说就是id类型。事实上,由于静态类型的固定性和可预知性,从而使用的更加的广泛。静态类型在编译的时候就能识别出来,所以,若程序发生类型不对应,编译器会发出警告。动态类型编译器编译的时候是不能识别的,要等到运行时(run time),即程序运行的时候才会根据语境识别。静态类型是强类型,而动态类型属于弱类型,运行时决定接受者。

  • 动态绑定:基于动态类型,在某个实例对象被确定后,其类型便被确定了,该对象对应的属性和响应消息也被完全的确定了。在oc中没,函数的概念,我们叫“消息机制”。所谓的函数调用就是给对象发一条消息。这时,动态绑定的特性就来了。oc可以先跳过编译,到运行的时候才动态的添加和调用函数,在运行时才决定要调用什么方法,需要传什么参数进去,这就是动态绑定。

  • 动态加载:根据需求加载所需要的资源,最基本就是不同的机型配置,例如,在Retina设备上加载@2x的图片,而在老一些的的普通苹果设备上加载原图,让程序在运行时添加代码模块以及其他资源。用户可根据需求加载一些可执行的代码资源,而不是在在启动的时候就加载所有的组件,可执行代码可以含有和程序运行时整合的新类。

补充:
SEL类型:Objective-C在编译的时候,会根据方法的名字 (包括参数序列),生成一个用来区分这个方法的唯一的一个标示(ID),这个标示(ID)就是SEL类型的,在运行时候是通过方法的标示来查找方法的。只要方法的名字(包括参数序列)相同,那么它们的 ID都是相同的。

41 (OC)* OC的理解与动态特性的更多相关文章

  1. OC动态特性

    今天是2.15周日,快要过年了,我以一个实习生的身份在公司工作了快要两个月了吧,什么是北漂,北漂就是感觉生活节奏变了,以前困了可以上课睡觉,累了可以回家休息数周,人际交往乏了,可以躲起来看着窗外的雨或 ...

  2. iOS 深入Objective-C的动态特性

    深入Objective-C的动态特性 Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有动态类型(Dynamic typing),动态绑定(Dynamic binding)和 ...

  3. 深入Objective-C的动态特性 Runtime

    Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有动态类型(Dynamic typing),动态绑定(Dynamic binding)和动态加载(Dynamic loadin ...

  4. Ruby基础类型,动态特性,代码块

    #Ruby内置基础数据类型 NilClass,TureClass,FalseClass,Time,Date,String,Range,Struct,Array,Hash #Numerice 1.分为I ...

  5. WPF:理解ContentControl——动态添加控件和查找控件

    WPF:理解ContentControl--动态添加控件和查找控件 我认为WPF的核心改变之一就是控件模型发生了重要的变化,大的方面说,现在窗口中的控件(大部分)都没有独立的Hwnd了.而且控件可以通 ...

  6. JavaScript的动态特性(通过eval,call,apply和bind来体现)

    JavaScript的动态特性(通过eval,call,apply和bind来体现) JavaScript是一种基于面向对象的.函数式的.动态的编程语言.现在发展到已经可以用在浏览器和服务器端了. 这 ...

  7. iOS 动态特性和RunTime

    过去的几年中涌现了大量的Objective-C开发者.有些是从动态语言转过来的,比如Ruby或Python,有些是从强类型语言转过来的,如Java或C#,当然也有直接以Objective-C作为入门语 ...

  8. JS动态特性

    var arr=[]; arr['js']='jquery'; arr['css']='oocss'; var obj={}; for(var i in arr) { obj[i]=arr[i]; } ...

  9. ios Objective-C的动态特性

    这是一篇译文,原文在此,上一篇文章就是受这篇文章启发,这次干脆都翻译过来. 过去的几年中涌现了大量的Objective-C开发者.有些是从动态语言转过来的,比如Ruby或Python,有些是从强类型语 ...

随机推荐

  1. print,cat打印格式及字符串引号格式,去掉字符串空格 in R

    print 函数的打印格式: ##no quote print out > x <- letters[1:5] > print(x,quote=F,);print(x,quote=T ...

  2. Scrapy爬虫框架学习

    一.Scrapy框架简介 1. 下载页面 2. 解析 3. 并发 4. 深度 二.安装 linux下安装 pip3 install scrapy windows下安装 a.pip3 install w ...

  3. CNN中1x1 卷积的处理过程及作用

    参看:https://blog.csdn.net/ybdesire/article/details/80314925

  4. 随笔编号-04 AngularJS 相关小问题解决方案合集

    1  解决 Select选择框遍历时,出现一个空白选项: <select style="width: 20%;margin-left: 5px;height: 31px;" ...

  5. jsDeliver+github使用教程,免费的cdn

    欢迎访问我的个人博客皮皮猪:http://www.zhsh666.xyz 前言:CDN的全称是Content Delivery Network,即内容分发网络.CDN是构建在网络之上的内容分发网络,依 ...

  6. XHTML 和 HTML 中的 iframe

    1. XHTML 有什么? XHTML是更严谨更纯净的HTML版本. 2.HTML和XHTML之间的差异 ①XHTML元素必须被正确的嵌套 /!--错误写法--/ <p><i> ...

  7. Mobx-React : 当前适合React的状态管理工具

    MobX 简单.可扩展的状态管理        MobX 是由 Mendix.Coinbase.Facebook 开源和众多个人赞助商所赞助的.    安装 安装: npm install mobx ...

  8. 牛客小白月赛4 C 病菌感染 dfs

    链接:https://www.nowcoder.com/acm/contest/134/C来源:牛客网 题目描述 铁子和顺溜上生物课的时候不小心将几滴超级病菌滴到了培养皿上,这可急坏了他们. 培养皿可 ...

  9. webpack4 公共模块打包,怎么抽取出来一个需要经常修改的包

    项目中有一个需求: 所有页面引用了一个公共ad.js 因为广告需要不断投放新渠道,所以ad.js需要经常上线更新,这样会导致打包出来的 commons.js经常更新,缓存一下无效了.所以急需将ad.j ...

  10. RobotFramework自动化测试框架-MongoDBLibrary库的使用

    笔者接着 RobotFramework自动化测试框架-DatabaseLibrary库的使用(对数据库的操作) 继续分享robotframework 对数据库中的MongoDB的详细操作. Mongo ...