iOS 进阶 第二十二天(0603)
2016-01-09 18:16
429 查看
0603 block\运行时
block![](http://images2015.cnblogs.com/blog/351007/201601/351007-20160109181519793-1647087467.png)
block的本质是一个指向结构体的指针.
运行时
要分析clang命令反编译出来的c++代码,就要把一些小括号删掉来分析.因为这些小括号一般都是类型强转.
oc底层runtime是通过objec_msgSend这种消息派发机制给一个对象发送消息调用指定的方法的.如下图:
![](http://images2015.cnblogs.com/blog/351007/201601/351007-20160109181527340-1234154732.png)
我用过运行时的东西来写代码,如下示例:
1、通过runtime底层代码的方式给一个对象的成员变量赋值,代码如下图:
![](http://images2015.cnblogs.com/blog/351007/201601/351007-20160109181532262-1161081754.png)
2、分类扩充成员变量
本来分类是不能扩充成员变量的,但通过运行时的方法就能扩充成员变量,代码如下图:
![](http://images2015.cnblogs.com/blog/351007/201601/351007-20160109181539371-466614006.png)
C#中的反射,可以获取一个对象包含成员变量名称和类型及其所能调用的方法.这个在oc的运行时runtime底层中一样可以实现,如下图所示:
![](http://images2015.cnblogs.com/blog/351007/201601/351007-20160109181548028-1691461518.png)
block,下面的一些解释一定要注意
![](http://images2015.cnblogs.com/blog/351007/201601/351007-20160109181559278-908103990.png)
相关文章推荐
- iOS 进阶 第二十一天(0531)
- iOS 进阶 第二十天(0520)
- iOS 进阶 第十九天(0423)
- iOS 进阶 第十八天(0423)
- iOS 进阶 第十七天(0420)
- iOS 进阶 第十六天(0419)
- iOS 进阶 第十五天(0417)
- iOS 进阶 第十四天(0416)
- iOS 进阶 第十三天(0414)
- iOS Masonry的使用
- iOS开发 常见的一些单词
- iOS 进阶 第十二天(0413)
- iOS 进阶 第十一天(0411)
- iOS 进阶 第十天(0410)
- iOS 进阶 第九天(0408)
- 检测IOS的版本信息
- iOS 进阶 第八天(0407)
- iOS开发tableView去掉顶部上部空表区域
- 重新设置系统内部属性
- iOS 进阶 第七天(0403)