A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wx_sDq3j8d0 中级黑马   /  2015-9-16 21:56  /  780 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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的图片,当设备更换的时候,图片也会自动的替换,还有就是我们公司主板项目中根据服务器返回的类名来动态创建类.

评分

参与人数 2黑马币 +9 收起 理由
oxzjsku + 5
毛玻璃球 + 4

查看全部评分

2 个回复

倒序浏览
真棒,上课专心听讲吧,别抠脚
回复 使用道具 举报
总结的真够仔细的,努力。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马