码迷,mamicode.com
首页 > 其他好文 > 详细

Objective-C:运行时runtime

时间:2015-12-06 19:12:31      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

1.是否可以把比较耗时的操作放在通知中心中?
 

通知在哪一个线程发的,那么对通知事件的处理就在同一个线程中进行;

如果在异步线程发的通知,那么可以执行比较耗时的操作;
如果在主线程发的通知,那么就不可以执行比较耗时的操作。
 
2.Foundation对象和CoreFoundation对象有什么区别?
Foundation对象时OC的;
CoreFoundation对象是C的;
Foundation对象和CoreFoundation对象是可以互相转换的,数据类型之间的转换
·ARC : __bridge_retained、__bridge_transfer、CFBridgingRetain、CFBridgingRelease
·非ARC : __bridge
 
 
3.什么是runtime?

1> runtime是一套底层的C语言API(包含很多强大实用的C语言数据类型、C语言函数)

2> 实际上,平时我们编写的OC代码,底层都是基于runtime实现的

* 也就是说,平时我们编写的OC代码,最终都是转成了底层的runtime代码(C语言代码)

 

runtime有啥用?

1> 能动态产生一个类、一个成员变量、一个方法

2> 能动态修改一个类、一个成员变量、一个方法

3> 能动态删除一个类、一个成员变量、一个方法

 

常见的函数、头文件

#import <objc/runtime.h> : 成员变量、类、方法

Ivar * class_copyIvarList : 获得某个类内部的所有成员变量

Method * class_copyMethodList : 获得某个类内部的所有方法

Method class_getInstanceMethod : 获得某个实例方法(对象方法,减号-开头)

Method class_getClassMethod : 获得某个类方法(加号+开头)

method_exchangeImplementations : 交换2个方法的具体实现

 

#import <objc/message.h> : 消息机制

objc_msgSend(….)

 

什么是iOS Swizzle? 利用运行时函数交换2个方法的实现

 

 

Objective-C:运行时runtime

标签:

原文地址:http://www.cnblogs.com/XYQ-208910/p/5024061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!