今天是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动态特性的更多相关文章

  1. 41 (OC)* OC的理解与动态特性

    1:动态类型(Dynamic typing),动态绑定(Dynamic binding)和动态加载(Dynamic loading). 动态类型:即运行时再决定对象的类型.简单说就是id类型.id类型 ...

  2. OC 动态类型,动态绑定,动态加载

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

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

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

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

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

  5. iOS 动态特性和RunTime

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

  6. JS动态特性

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

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

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

  8. ios Objective-C的动态特性

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

  9. Objective-C的动态特性

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

随机推荐

  1. ASP.NET MVC路由配置

    一.命名参数规范+匿名对象 routes.MapRoute(name: "Default", url: "{controller}/{action}/{id}" ...

  2. maven打包无法打包mybatis及系统配置文件问题

    <resources> <!-- mybatis映射文件 --> <resource> <directory>src/main/java/com/bsh ...

  3. BZOJ 1724 切割木板

    合并果子. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm& ...

  4. POJ 3692 Kindergarten (补图是二分图的最大团问题)

    题意 幼稚园里有m个男孩和n个女孩(m.n范围都是[1,200]),男孩之间相互认识,女孩之间也相互认识,另外有部分男孩和女孩也认识.现在要举办一个活动,选取一些同学,要求所有选取的同学之间两两相互认 ...

  5. Jave 鼠标点击画太极 PaintTaiji (整理)

    package demo; /** * Jave 鼠标点击画太极 PaintTaiji (整理) * 声明: * 又是一份没有注释的代码,而且时间已经久远了,不过代码很短,解读起来应该 * 不会很麻烦 ...

  6. acdream 1682 吃不完的糖果(环形最大子段和)

    Problem Description 娜娜好不容易才在你的帮助下"跳"过了这个湖,果然车到山前必有路,大战之后必有回复,大难不死,必有后福!现在在娜娜面前的就是好多好多的糖果还有 ...

  7. 深入理解require/include的顺序

    在大型的Web项目中, include_path是一个模块化设计的根本中的根本(当然,现在也有很多基于autoload的设计, 这个不影响本文的探讨), 但是正是因为include_path, 经常会 ...

  8. 【转】Ubuntu搭建Eclipse+JDK+SDK的Android

    原文网址:http://blog.csdn.net/ithomer/article/details/6960989 今晚重装Ubuntu系统,重新安装了一套eclipse+jdk+SDK的Androi ...

  9. UIScrollView 不能滚动的问题

    uiscrollview是开发sdk自带的控件, 在使用的时候,发现滚动不了, 最常山见的原因是 contentSize 这个属性,比uiscrollview的frame要小...所以无需滚动,自然就 ...

  10. socket 基础知识

    PHP使用Berkley的socket库来创建它的连接.socket只不过是一个数据结构.你使用这个socket数据结构去开始一个客户端和服务器之间的会话.这个服务器是一直在监听准备产生一个新的会话. ...