iOS runtime 初步学习
注: 在Xocde5之后, 使用运行时方法需要进行2步设置
1. 在Build Setting中搜索'msg', 设置'Strict Checking' 为 NO
2. 使用需要导入头文件 #import <objc/message.h>
// 一. 消息发送
objc_msgSend(类对象 / 实例对象, @selector(方法名:), 参数(可选));
// 二. 方法交换(以UIImage的imageNamed:方法为例)
// 1. 获取method
Method method1 = class_getClassMethod([UIImage class], @selector(imageNamed:));
Method method2 = class_getClassMethod([UIImage class], @selector(xc_imageNamed:));
// 2. 交换method
method_exchangeImplementations(method1, method2);
// xc_imageNamed: 方法实现
+ (__kindof UIImage *)xc_imageNamed:(NSString *)imageName {
UIImage *image = [UIImage xc_imageNamed:imageName];
if (image == nil) {
NSLog(@"image为空-----");
}
return image;
}
// 三.获取成员变量名称
// 1. 定义一个无符号整型数字(用于记录类中的成员变量的个数)
unsigned int count = 0;
// 2. 使用这个runtime函数,可以获取一个类的成员变量,返回一个ivar类型的数组
Ivar *vars = class_copyIvarList([BESTNews class], &count);
for (int i = 0; i < count; i++) {
Ivar member = vars[i];
// 3. 输出对应的成员变量名称
const char *name = ivar_getName(member);
NSLog(@"%s", name);
}
iOS runtime 初步学习的更多相关文章
- iOS runloop初步学习
参考: http://www.aichengxu.com/view/43297111. 定义:其实它内部就是do-while循环,在这个循环内部不断地处理各种任务(比如Source.Timer.Obs ...
- ios runtime的相关知识
一.iOS runtime原理 对于runtime机制,在网上找到的资料大概就是怎么去用这些东西,以及查看runtime.h头文件中的实现,当然这确实是一种很好的学习方法,但是,其实我们还是不会知道r ...
- 包建强的培训课程(11):iOS Runtime实战
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- iOS runtime探究(二): 从runtime開始深入理解OC消息转发机制
你要知道的runtime都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/67639289 本文主要解说runtime相关知识, ...
- iOS --runtime理解
iOS~runtime理解 Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西.最近在学习Runtime,有自己的一些心得,整理如下,一为 查阅方便二为 或许能给 ...
- IOS MenuController初步了解
IOS MenuController初步了解 默认情况下有以下控件已经支持MenuController. UITextField UITextView UIWebView 让其他控件也支持MenuCo ...
- json2.js的初步学习与了解
json2.js的初步学习与了解,想要学习json的朋友可以参考下. json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org/json2.js 2.)在页面 ...
- ios runtime swizzle
ios runtime swizzle @implementation NSObject(Extension) + (void)swizzleClassMethod:(Class)class orig ...
- 老周的ABP框架系列教程 -》 一、框架理论初步学习
老周的ABP框架系列教程 -- 一.框架理论初步学习 1. ABP框架的来源与作用简介 1.1 简介 1.1.1 ABP框架全称为"ASP.NET Boilerplate ...
随机推荐
- Java程序员学习之路
1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基 ...
- nodejs回调函数
阻塞代码实例: main.js var fs=require("fs"); var data=fs.readFileSync("1.txt"); console ...
- 安装freetds小记
FreeTDS的软件获取:在官网上进行下载:http://www.freetds.org/ 执行以下命令: ./configure --with-tdsver=7.1 --enable-msdblib ...
- Python多重装饰器
多重装饰器,即多个装饰器修饰同一个对象[实际上并非完全如此,且看下文详解] 1.装饰器无参数: >>> def first(func): print '%s() was post t ...
- [Android] 转-LayoutInflater丢失View的LayoutParams
原文地址:http://lmbj.net/blog/layoutinflater-and-layoutparams/ View view = inflater.inflate(R.layout.ite ...
- asp.net5 Area的处理
Controller加上Attribute [Area("SystemSecurity")] startup中配置 app.UseMvc(routes => { // Are ...
- table 边框显示
.td{border:solid #add9c0; border-width:0px 1px 1px 0px;}.table{border:solid #add9c0; border-width:1p ...
- Azure Web Site 之 利用Azure Web site 发布网站
由于经常混迹于MSDN Azure论坛,少不了和一些外国朋友打交道.有的时候觉得还是有一些东西可以写出来与外国友人们分享下的, 所以就用一个开源项目建了一个英文blog项目. 在发布的时候,首选的就是 ...
- Infinite loop when using cookieless session ID on Azure
If you use cookieless session ID and deploy them on Azure, you might get infinite loop when you quer ...
- PostgreSQL的OGG -- bucardo
bucardo是PostgreSQL数据库中实现双向同步的软件,可以实现PostgreSQL数据库的双master的方案,不过bucardo中的同步都是异步的,它是通过触发器记录变化,程序是perl写 ...