rurntime常用函数

一、在objc/message.h中常用的运行时函数

#import <objc/message.h>

/**

*1.对象调用方法

*/

id objc_msgSend(id self, SEL op, ...)

id self://调用方法的对象

SEL://调用的方法

...://方法的参数

//示例:(在某的下拉刷新中有用到)

Person p = [[Person alloc] init];

[p setAge:20];

objc_msgSend(p, [email protected](setAge:), 20);//等价于上句

二、在objc/runtime.h中常用的运行时函数

#import <objc/runtime.h>

/**

*2.获取成员变量

*/

//获取成员变量的指针数组和个数

Ivar *class_copyIvarList(Class cls, unsigned int *outCount)

Class cls:类名

unsigned int *outCount:传入整形的地址

//获取成员变量名

const char *ivar_getName(Ivar v)

//获取成员类型

const char *ivar_getTypeEncoding(Ivar v)

//示例:(在字典转模型的第三方框架中就是用这个函数实现的)

// Ivar : 成员变量

unsigned int count = 0;

// 获得所有的成员变量

Ivar *ivars = class_copyIvarList([HMPerson class], &count);

for (int i = 0; i<count; i++) {

// 取得i位置的成员变量

Ivar ivar = ivars[i];

const char *name = ivar_getName(ivar);

const char *type = ivar_getTypeEncoding(ivar);

NSLog(@"%d %s %s", i, name, type);

}

/**

*3.为成员变量赋值

*/

//为私有成员变量赋值

- (void)willChangeValueForKey:(NSString *)key;

void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)

- (void)didChangeValueForKey:(NSString *)key;

//获取私有成员变量

id objc_getAssociatedObject(id object, const void *key)

//示例:(在某下拉刷新第三方框架中利用这个函数为UIScrollView动态的添加了HeaderView和FooterView)

static char MJRefreshHeaderViewKey;

static char MJRefreshFooterViewKey;

- (void)setHeader:(MJRefreshHeaderView *)header {

[self willChangeValueForKey:@"MJRefreshHeaderViewKey"];

objc_setAssociatedObject(self, &MJRefreshHeaderViewKey,

header,

OBJC_ASSOCIATION_ASSIGN);

[self didChangeValueForKey:@"MJRefreshHeaderViewKey"];

}

- (MJRefreshHeaderView *)header {

return objc_getAssociatedObject(self, &MJRefreshHeaderViewKey);

}

- (void)setFooter:(MJRefreshFooterView *)footer {

[self willChangeValueForKey:@"MJRefreshFooterViewKey"];

objc_setAssociatedObject(self, &MJRefreshFooterViewKey,

footer,

OBJC_ASSOCIATION_ASSIGN);

[self didChangeValueForKey:@"MJRefreshFooterViewKey"];

}

- (MJRefreshFooterView *)footer {

return objc_getAssociatedObject(self, &MJRefreshFooterViewKey);

}

时间: 2024-10-10 02:12:12

rurntime常用函数的相关文章

Data Frame的常用函数

1.DataFrame的常用函数: (1)np.abs(frame) 绝对值, (2)apply function, lambda f= lambda x: x.max()-x.min(),frame.apply(f); frame.apply(f,axis = 1) f(x), def f(x): return Series([x.min(),x.max()], index=['min','max']),frame.apply(f)(3) applymap format f= lambda x

Oracle SQL语言之常用函数_超越OCP精通Oracle视频教程培训30

Oracle SQL语言之常用函数_超越OCP精通Oracle视频教程培训30 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第5/5套:Oracle SQL语言之常用函数.主要学习Oracle数据库SQL聚合函数,分组函数,字符函数,转换函数,日期字符数字转换,日期函数,集合函数,分析函数等. Oracle SQL语言之常用函数,课程内容详细如下: 聚合函数-数据统计 分组函数-使用group by与havin

MySQL学习笔记(三)——计算字段及常用函数

拼接字段-Concat()函数        将值连接在一起构成单个值.注意:大多数DBMS使用+或者||来实现拼接,mysql则使用Concat()函数来实现. 去空格函数-Trim函数        Trim去掉串左右两边的空格,RTrim去掉串右边的空格,LTrim去掉左边的空格. 使用别名-AS        我们希望查出的新列能有个简介明了的列名,可以用AS来赋予别名. 执行算术运算(+,-,*,/) 大多数sql实现支持以下类型的函数: 1.用于处理文本串(如删除或填充值,转换值为大

162个php常用函数基础用法(个人整理)

PHP常用函数总结 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2); //4.2 数字绝对值数字 2.ceil(): 进一法取整 echo ceil(9.999); // 10 浮点数进一取整 3.floor(): 舍去法取整 echo floor(9.999); // 9 浮点数直接舍去小数部分 4.fmod(): 浮点数取余 ? 1 2 3 4 $x = 5.7; $y = 1.3; // 两个浮点数,x>y 浮点余数 $r = fmod($x, $y); // $r

sql server常用函数、常用语句

一.常用函数 1.字符串函数 : charindex(':','abc:123')    --寻找一个字符在一段字符串中起始的位置 len('zhangsan')   --获取一段字符串的长度 left('Ly,君子之耀',2) --从一段字符串左边返回指定长度的字符 right(char_expr,int_expr)  --返回字符串右边int_expr个字符 substring(expression,start,length) --截取字符串 datalength(Char_expr)  -

常用函数

字符串函数: concat ('xiao','qun'); =====>xiaoqun insert('woshixiaozou',10,3,'qun'); =====> woshixiaoqun select lower('XIAOQUN'),upper('xiaoqun'); =====> xiaoqun XIAOQUN select left('xiaoqunwoshi',7),right('xiaoqunwoshi',5); =====>xiaoqun woshi sele

js常用函数和常用技巧

学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. PS:此文档,我会持续更新. Ajax请求 jquery ajax函数 我自己封装了一个ajax的函数,代码如下: var Ajax = function(url, type success, error) { $.ajax({ url: url, type: type, dataType: 'json', timeout: 100

dplyr 数据操作 常用函数(4)

接下来我们继续了解一些dplyr中的常用函数. 1.ranking 以下各个函数可以实现对数据进行不同的排序 row_number(x) ntile(x, n) min_rank(x) dense_rank(x) percent_rank(x) cume_dist(x) 具体的看些例子. x <- c(5, 1, 3, 2, 2, NA) x row_number(x) row_number是对数据大小进行编号排序,遇到重复值,排序继续加1,缺失值不计入 min_rank(x) min_rank

【COCOS CREATOR 系列教程之二】脚本开发篇&事件监听、常用函数等示例整合

[Cocos Creator ](千人群):  432818031 上一篇,介绍了Himi在使用过cc所有组件后的一篇总结,没有具体介绍每个组件的原因在于官方文档很齐全,而且也有视频的介绍. 所以希望童鞋们可以把我这两篇博文当成对组件.脚本两部分开发的整理与总结. 后续的文章,Himi应该主要更新一些官方还未补充或者还没有的教程.避免无用功. 下面直接放出代码,因为不是很难理解.所以不再一一赘述,都是常用的函数.事件监听.动作回调.定时器等开发过程中必接触的. 大致内容如下: cc 属性介绍 获