[Runtime]-发送消息
2016-08-03 00:00
106 查看
摘要: Runtime发送消息的过程、原理、作用、等等使用
1:任何方法调用的本质:
发送一个消息,用Runtime发送消息,OC底层的实现就是使用Runtime去实现的.
2:怎样验证:方法调用,是否真的是转化为消息机制呢?
> 01-最终生成消息机制,是编译器做的事情
> 02-如果想看最终代码,需要把当前代码重新编译,使用xcode编译器:clang编译器去重新编译就可以看到
使用clang编译器去查看最终的消息机制代码步骤?
>: 打开xcode新建工程-->选择OS X、Application-->Command Line Tool-->创建一个命令行工程
>: 然后在main.m文件中,创建对象,如:
>: 打开终端:进入该工程中的目录下,main.m的上一级目录,cd +(目录下)
>:使用这个命令:clang -rewrite-objc main.m ,就会在main.m同级目录下生成一个main.cpp文件,打开双击就可以看到最终的代码:按住command + f--->搜索autoreleasepool-->就可以看到创建对象的那两行代码的消息机制代码
3:根据以上论证,我们可以自己测试使用,具体步骤?
> 使用Runtime运行时第一步:导入头文件 :#import <objc/message.h>
> xcode6之前,苹果允许我们使用objc_msgSend,而且是有参数提示的;xcode6,苹果不再推荐我们使用runtime
解决参数提示配置:工程文件-->BuildSetting-->搜索msg-->修改为NO即可
测试代码:
意见反馈邮件:1415429879@qq.com
欢迎你们的阅读和赞赏、谢谢!
1:任何方法调用的本质:
发送一个消息,用Runtime发送消息,OC底层的实现就是使用Runtime去实现的.
2:怎样验证:方法调用,是否真的是转化为消息机制呢?
> 01-最终生成消息机制,是编译器做的事情
> 02-如果想看最终代码,需要把当前代码重新编译,使用xcode编译器:clang编译器去重新编译就可以看到
使用clang编译器去查看最终的消息机制代码步骤?
>: 打开xcode新建工程-->选择OS X、Application-->Command Line Tool-->创建一个命令行工程
>: 然后在main.m文件中,创建对象,如:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { id objc = [NSObject alloc]; objc = [objc init]; } return 0; }
>: 打开终端:进入该工程中的目录下,main.m的上一级目录,cd +(目录下)
>:使用这个命令:clang -rewrite-objc main.m ,就会在main.m同级目录下生成一个main.cpp文件,打开双击就可以看到最终的代码:按住command + f--->搜索autoreleasepool-->就可以看到创建对象的那两行代码的消息机制代码
3:根据以上论证,我们可以自己测试使用,具体步骤?
> 使用Runtime运行时第一步:导入头文件 :#import <objc/message.h>
#import <objc/message.h>
> xcode6之前,苹果允许我们使用objc_msgSend,而且是有参数提示的;xcode6,苹果不再推荐我们使用runtime
解决参数提示配置:工程文件-->BuildSetting-->搜索msg-->修改为NO即可
测试代码:
- (void)viewDidLoad { [super viewDidLoad]; /** * 1:使用运行时去测试第一步:导入头文件 #import <objc/message.h> * 2:xcode6之前,苹果允许你使用objc_msgSend(),而且有参数提示 xcode6,苹果不推荐我们使用runtime 解决参数提示配置:工程文件-->buildSetting-->搜索msg-->修改为NO即可 */ /** * 1:类方法本质:类对象调用[NSObject class] */ // id:谁发送消息 // SEL:发送什么消息 //id objc = [NSObject alloc]; id objc = objc_msgSend([NSObject class], @selector(alloc)); //objc = [objc init]; objc = objc_msgSend(objc, @selector(init)); }
意见反馈邮件:1415429879@qq.com
欢迎你们的阅读和赞赏、谢谢!
相关文章推荐
- 简谈runtime运行机制之消息发送与转发
- 神经病院Objective-C Runtime住院第二天——消息发送与转发
- [置顶] iOS runtime 之消息发送机制三次拯救机会
- 从发送一个消息(调用一个方法)来说 Runtime
- Runtime 一一 runtime作用-发送消息
- runtime从入门到精通(五)—— 消息发送和消息转发
- java.lang.RuntimeException: 将消息发送到死的线程上处理程序的处理程序 (android.os.Handler)
- runtime - 消息发送(objc_msgSend)
- 初识 Runtime机制 - 发送消息
- runtime消息发送
- runtime1 - 消息发送机制
- 神经病院Objective-C Runtime住院第二天——消息发送与转发
- iOS_Runtime1_消息发送机制
- 高性能网络编程2----TCP消息的发送
- Smack 结合 Openfire服务器,建立IM通信,发送聊天消息
- iOS 【iOS Runtime浅析(1):消息传递与动态解析】
- 通知栏发送消息Notification(可以使用自定义的布局)
- .net中即时消息发送的实现
- RCS-MSRP发送1:1(1对1)的消息流程
- Socket向完成端口多次发送消息浅见