OC动态特性
今天是2.15周日,快要过年了,我以一个实习生的身份在公司工作了快要两个月了吧,什么是北漂,北漂就是感觉生活节奏变了,以前困了可以上课睡觉,累了可以回家休息数周,人际交往乏了,可以躲起来看着窗外的雨或者玩着LOL安安静静的过一段时间,目前由于巧合走上了这条路,当初还在为走那条路而犹豫,如今不知道不觉已经进来了,面对社会,面对未知的人们,面对渺茫的雾霾的北京,仿佛又回到了最初的起点,一切既然当初做抉择的时候选择了这条路,不管在哪里都要慢慢的学习....
OC具有很多的动态特性,有动态类型(Dynamic typing),动态绑定(Dynamic binding)和动态加载(Dynamic loading).
OC在底层也提供了相当丰富的运行时特性,比如枚举类属性方法,获取方法实现等.
动态特性:
1.动态类型:即运行时再决定对象的类型.id类型即通用的对象类,任何的对象都可以用id类型来指向(通常用于不知道该对象为什么类型的对象的时候才使用).
id obj = name;
if ([obj isKindOfClass:[NSString class]]) {
NSString * str = (NSString *)name;
}
isKindOfClass:用于确定某个NSObject对象是否是某个类的成员. 而isMemberOfClass:是NSObject方法,用于确定某个对象是否是某个类或其子类的成员
2.动态绑定:经过动态类型确定实例对象之后,该实例对象对应的属性和一些方法也随即被确定,根据类的确定,确定了类的属性和类的方法.OC中调用一个实例的方法,就是通过OC的消息机制发送一个消息,实例在收到消息后,从自身的实现中找到方法来响应.动态绑定就是实例所属的类经过运行后确定,将类的属性和方法绑定在动态类型上,而不是事先确定的,因为类也是动态类型创建的
3.动态加载:所谓动态加载就是我们做开发的时候icon图片的时候在Retina设备上要多添加一个张@2x的图片,当设备更换的时候,图片也会自动的替换,还有就是我们公司主板项目中根据服务器返回的类名来动态创建类.
iOS开发的运行时特性
我们做开发的时候会经常用到Protocol-Delegate的设计模式,所以不管是我们使用的,还是我们自己定义的delegate指针类型必须是id类型的,只有这样我们才能够满足程序运行时delegate的来回切换.
OC动态特性的更多相关文章
- 41 (OC)* OC的理解与动态特性
1:动态类型(Dynamic typing),动态绑定(Dynamic binding)和动态加载(Dynamic loading). 动态类型:即运行时再决定对象的类型.简单说就是id类型.id类型 ...
- OC 动态类型,动态绑定,动态加载
OC 动态类型,动态绑定,动态加载 Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有 动态类型(Dynamic typing) 动态绑定(Dynamic binding) ...
- iOS 深入Objective-C的动态特性
深入Objective-C的动态特性 Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有动态类型(Dynamic typing),动态绑定(Dynamic binding)和 ...
- 深入Objective-C的动态特性 Runtime
Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有动态类型(Dynamic typing),动态绑定(Dynamic binding)和动态加载(Dynamic loadin ...
- iOS 动态特性和RunTime
过去的几年中涌现了大量的Objective-C开发者.有些是从动态语言转过来的,比如Ruby或Python,有些是从强类型语言转过来的,如Java或C#,当然也有直接以Objective-C作为入门语 ...
- JS动态特性
var arr=[]; arr['js']='jquery'; arr['css']='oocss'; var obj={}; for(var i in arr) { obj[i]=arr[i]; } ...
- Ruby基础类型,动态特性,代码块
#Ruby内置基础数据类型 NilClass,TureClass,FalseClass,Time,Date,String,Range,Struct,Array,Hash #Numerice 1.分为I ...
- ios Objective-C的动态特性
这是一篇译文,原文在此,上一篇文章就是受这篇文章启发,这次干脆都翻译过来. 过去的几年中涌现了大量的Objective-C开发者.有些是从动态语言转过来的,比如Ruby或Python,有些是从强类型语 ...
- Objective-C的动态特性
最近几年中涌现了大量的Objective-C开发者.有些是从动态语言转过来的,比如Ruby或Python,有些是从强类型语言转过来的,如Java或C#,当然也有直接以Objective-C作为入门语言 ...
随机推荐
- 【笨嘴拙舌WINDOWS】实践检验之GDI缩放
SetMapmode(dc,MM_Text); //先继承MM_TEXT的属性 SetMapMode(dc,MM_ANISOTROPIC); SetWindowExtEx(dc,rect.Right, ...
- HDU 1847 (博弈 找规律) Good Luck in CET-4 Everybody!
为了提高题解质量还是简单证明一下:3的倍数是必败状态. 如果n % 3 = 1,那么拿走1个石子:如果n % 3 = 2,那么拿走两个石子,都将转移到3的倍数的状态.所以每个必胜状态都有一个后继是必败 ...
- UploadifyAPI-上传插件属性和方法介绍
上一篇文章简单的介绍了Uploadify上传插件的使用.但是对于常用的属性和方法并没有说明.授人以鱼不如授人以渔,我决定将常用的属性列举出来,供大伙参考参考. Uploadify属 ...
- 02.C语言关于指针的学习笔记
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址. 要搞清一个指针需要搞清指针的四方面的内容: 指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内 ...
- 多线程-NSOperation中使用ASIHttpRequest注意事项
最近做的iPhone项目中有一如下功能: app在用户许可后将本地Photos的照片上传到服务器,期间用户可以做其他任何操作,等上传成功后弹出一个toast通知用户. 原先的代码结构是: 获取照片的操 ...
- php 换行 PHP_EOL变量
一个小小的换行,其实在不同的平台有着不同的实现,为什么要这样,可以是世界是多样的. 本来在unix世界换行就用/n来代替,但是windows为了体现他的不同,就用/r/n,更有意思的是在mac中用/r ...
- watch 命令实时命令执行监控
watch 命令 watch -d -n 1 'df; ls -FlAt /path' 在使用这条命令时你需要替换其中的 /path 部分,watch 是实时监控工具,-d 参数会高亮 显示变化的 ...
- 【英语】Bingo口语笔记(42) - Got系列
- 【转】iOS开发-Protocol协议及委托代理(Delegate)传值
原文网址:http://www.cnblogs.com/GarveyCalvin/p/4210828.html 前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来 ...
- Android 线程与消息 机制 15问15答
1.handler,looper,messagequeue三者之间的关系以及各自的角色? 答:MessageQueue就是存储消息的载体,Looper就是无限循环查找这个载体里是否还有消息.Handl ...