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 ...
随机推荐
- html radio check
{% if classes|count > 1 %} <div class="class_checkbox" id="class_checkbox" ...
- operator->和operator->*
->和->*都是C++中定义的可重载的运算符,其中:->称为成员选择符(member selection),而->*称为成员指针选择符(pointer-to-member se ...
- 2.5 C#的数据类型
在我们定义变量的时候需要使用数据类型,不同数据类型定义的变量,它的值的表现形式不同.比如整型主要表示整数,浮点型表示小数等等. C#中的数据类型有很多同C语言的相同,先学习一些简单的数据类型,其他的以 ...
- asp.net5 Area的处理
Controller加上Attribute [Area("SystemSecurity")] startup中配置 app.UseMvc(routes => { // Are ...
- mvc中测试网络
.//控制器层面 public string IsAnyNetworkAvailable() { try { foreach (NetworkInterface ni in NetworkInterf ...
- Foundation框架
1.框架是由许多类.方法.函数.文档按照一定的逻辑组织起来的集合,以便使研发程序变的更容易 清除缓存,删除这个文件夹下的所有文件/Users/fanyafang/Library/Developer/X ...
- C# 自动Ping服务
using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; u ...
- (function(){})()是什么意思?
JS里面(function(){})()function外面的括号是什么意思? 定义了一个函数,并马上执行这个函数.这是js中常用的方式.好处呢.参考:js 闭包
- 关于SSIS中解密FTP字符串的方法
FTP(File Transfer Protocol),是文件传输协议的简称.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).用户可以通过它把自己的PC ...
- python 编辑xml中namespace问题中出现很多ns0
原始文件: