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的来回切换.

时间: 2025-01-15 22:24:36

OC动态特性的相关文章

【IOS】深入Objective-C的动态特性(转)

转载至:http://www.onevcat.com/2012/04/objective-c-runtime/ Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有动态类型(Dynamic typing),动态绑定(Dynamic binding)和动态加载(Dynamic loading). 这些动态特性都是在Cocoa程序开发时非常常用的语言特性,而在这之后,OC在底层也提供了相当丰富的运行时的特性,比如枚举类属性方法.获取方法实现等等.虽然在平常的Cocoa开发中这

深入Objective-C的动态特性

文章出处:http://onevcat.com/2012/04/objective-c-runtime/ 如果转载请注明出处,最终原创的版权 深入Objective-C的动态特性 Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有动态类型(Dynamic typing),动态绑定(Dynamic binding)和动态加载(Dynamic loading). 这些动态特性都是在Cocoa程序开发时非常常用的语言特性,而在这之后,OC在底层也提供了相当丰富的运行时的特性,

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

Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有 动态类型(Dynamic typing) 动态绑定(Dynamic binding) 动态加载(Dynamic loading) 动态类型:程序直到执行时才能确定所属的类. id 数据类型id 通用的对象类型,可以存储任意类型的对象,id后面没有号,它本身就是个指针类似于void ,但只可以指向对象类型 静态类型与动态类型 编译期检查与运行时检查 静态类型在编译期就能检查出错误 静态类型声明代码可读性好 动态类型只有在

C++动态特性和C++对象模型——《高质量程序设计12章》

1.动态特性 静态特性和动态特性,编译时和运行时 虚函数 (1)虚函数的叫覆盖,虚函数不是实现多态的唯一手段(其他语言也可能采用别的方法). 抽象基类:

iOS 动态特性和RunTime

过去的几年中涌现了大量的Objective-C开发者.有些是从动态语言转过来的,比如Ruby或Python,有些是从强类型语言转过来的,如Java或C#,当然也有直接以Objective-C作为入门语言的.也就是说有很大一部分开发者都没有使用Objective-C太长时间.当你接触一门新语言时,更多地会关注基础知识,如语法和特性等.但通常有一些更高级的,更鲜为人知又有强大功能的特性等待你去开拓. 这篇文章主要是来领略下Objective-C的运行时(runtime),同时解释是什么让Object

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

#Ruby内置基础数据类型 NilClass,TureClass,FalseClass,Time,Date,String,Range,Struct,Array,Hash #Numerice 1.分为Interger整数类.Interger又分为Fixnum和Bignum. #2.#Float浮点数 #3.Complex复数. #Bury的动态特性 #1.动态执行字符串形式的代码 eval #2.动态获得模块或类中的常量和变量的值 #3.动态为类或对象添加方法 #4.对为知变量和方法的动态处理 #

<<黑马程序员>>OC编译器特性

点语法 特性:点语法的本质就是方法调用 成员变量的作用域 ① public :在任何地方都可以访问成员变量 在函数中可通过变量名来访问成员变量 ② private:表示私有,只能在当前类的对象方法中直接访问成员变量 ( @implemnetation中默认是@private(子类中不可访问)) ③ protected :可以在当前类和子类及其子类的对象方法中直接访问 ( 默认就是protected在interface) ④ package:只要处在同一个框架中,就能直接访问对象的变量. prop

OC三大特性之--多态

1.基本介绍 多态对于面向对象思想来说,个人感觉是真的很重要,他对以后的编写代码的优雅方式也是起到很重要的作用,其实现在很多设计模式中大部分都是用到了多态的特性,Java中的多态特性用起来很是方便的,但是C++中就很难用了,其实多态说白了就是:定义类型和实际类型,一般是基于接口的形式实现的,不多说了,直接看例子吧: 打印机的例子 抽象的打印机类Printer Printer.h #import @interface Printer : NSObject - (void) print; @end

OC三大特性之--继承

1.基本介绍 继承是类中的一个重要的特性,他的出现使得我们没必要别写重复的代码,可重用性很高.当然OC中的继承和Java中是一样的,没多大区别,这里在看一个例子吧: 首先来看一下父类:Car Car.h 1 #import 2 3 @interface Car : NSObject{ 4 NSString *_brand; 5 NSString *_color; 6 } 7 8 - (void)setBrand:(NSString *)brand; 9 - (void)setColor:(NSS