iOS runtime 运行时( - )
2016-03-25 13:25
316 查看
谈到运行时,相对应的就有编译时;
1).运行时-- 直到程序运行时才去确定一个对象的具体信息,并且可以改变这个类的具体信息,包括它的方法,变量等等;
2).编译时-- 是在程序运行之前,编译的时候,就确定了这个对象的具体信息,并且不可改变
先来说说,运行时,确定一个对象的具体信息的例子
这两句 代码,在Xcode里是可以编译成功,不会报错,但会有警告,运行的时候会崩溃,这就体现了,运行时 才会确定str 这个指针指向的对象的类型
编译时,str 是被当做 字符串 来进行处理的,运行的时候,就要访问str真正指向的对象,数组,所以 数组调用 length 的方法,就会抛出一个找不到该方法的异常,崩溃掉了呢
再举一个例子:
这样的一个类,.h 文件里声明了一个方法,.m 里并没有实现这个方法,.m 会有一个提示的警告
如果我这样 编写代码
这两句代码在编译时,程序运行之前是不会有任何问题的,警告都不会存在,但是运行的时候,会因为找不到这个方法 而崩溃
这样我们就简单的了解了下 运行的时候 确定 这个对象的 具体信息的概念,希望对大家有帮助,下一篇文章我们会探讨 改变!
1).运行时-- 直到程序运行时才去确定一个对象的具体信息,并且可以改变这个类的具体信息,包括它的方法,变量等等;
2).编译时-- 是在程序运行之前,编译的时候,就确定了这个对象的具体信息,并且不可改变
先来说说,运行时,确定一个对象的具体信息的例子
NSString *str = [NSArray arrayWithObject:@"3"]; NSLog(@"%ld",str.length);
这两句 代码,在Xcode里是可以编译成功,不会报错,但会有警告,运行的时候会崩溃,这就体现了,运行时 才会确定str 这个指针指向的对象的类型
编译时,str 是被当做 字符串 来进行处理的,运行的时候,就要访问str真正指向的对象,数组,所以 数组调用 length 的方法,就会抛出一个找不到该方法的异常,崩溃掉了呢
再举一个例子:
#import <Foundation/Foundation.h> @interface RTObj :NSObject -(void)sort; @end #import "RTObj.h" @implementation RTObj @end
这样的一个类,.h 文件里声明了一个方法,.m 里并没有实现这个方法,.m 会有一个提示的警告
如果我这样 编写代码
RTObj *obj = [[RTObj alloc] init]; [obj sort];
这两句代码在编译时,程序运行之前是不会有任何问题的,警告都不会存在,但是运行的时候,会因为找不到这个方法 而崩溃
这样我们就简单的了解了下 运行的时候 确定 这个对象的 具体信息的概念,希望对大家有帮助,下一篇文章我们会探讨 改变!
相关文章推荐
- iOS开发中调试的总结
- MiniOS系统
- IOS 非常流畅的滑动tableView
- 支付宝钱包支付iOS SDK的方法
- IOS中常用的定时器有三种
- [IOS 开发] 求两点之间的距离
- iOS语言本地化,中文显示
- iOS 音频开发之CoreAudio
- iOS NSString中的搜索方法rangeOfString
- iOS一分钟学会环形进度条
- IOS 正则表达式
- 你真的了解iOS代理设计模式吗?
- IOS Autolayout(VFL) 处理子视图居中
- IOS之简单滤镜详解
- iOS-自定义导航栏后侧滑返回功能失效
- TableView 去掉多余行数、IOS最后一行Cell系统分割线顶头
- ios 9 statusBar style
- iOS缓存框架-PINCache解读
- iOS开发 - 气泡控制器 IPAD
- iOS开发 - MagicalRecord