如何用perform selector调用超过两个以上参数的方法
来源:互联网 发布:思锐汽车配件软件 编辑:程序博客网 时间:2024/05/22 08:16
摘录:
Cocoa内置只支持两个参数,要超过两个参数以上怎么办呢,下面代码展示了如何实现一个自己的方法来调用超过7个参数(来自three20)
- (id)performSelector:(SEL)selector withObject:(id)p1 withObject:(id)p2 withObject:(id)p3
withObject:(id)p4 withObject:(id)p5 withObject:(id)p6 withObject:(id)p7
{
NSMethodSignature *sig = [self methodSignatureForSelector:selector];
if (sig) {
NSInvocation* invo = [NSInvocation invocationWithMethodSignature:sig];
[invo setTarget:self];
[invo setSelector:selector];
[invo setArgument:&p1 atIndex:2];
[invo setArgument:&p2 atIndex:3];
[invo setArgument:&p3 atIndex:4];
[invo setArgument:&p4 atIndex:5];
[invo setArgument:&p5 atIndex:6];
[invo setArgument:&p6 atIndex:7];
[invo setArgument:&p7 atIndex:8];
[invo invoke];
if (sig.methodReturnLength) {
id anObject;
[invo getReturnValue:&anObject];
return anObject;
} else {
return nil;
}
} else {
return nil;
}
}
- 如何用perform selector调用超过两个以上参数的方法
- ios如何用perform selector调用超过两个以上参数的方法
- 如何用perform selector调用超过两个以上参数的方法
- iOS调用perform selector超过2个参数以上的方法
- 如何用两个栈来实现队列的方法
- 如何用两个栈来实现队列的方法
- getopt()函数获取两个以上参数的方法
- android4.0+ 以上如何用通用方法打开日历
- 如何用反射调用scala方法
- 如何用U盘拷贝4G以上的文件?
- @selector 调用方法 传递多参数
- dede企业会员如何用列表的形式调用:调用会员及其对应的文章的方法
- 如何用最简单的方法找出两个表中不同的记录
- 如何用JAVA对两个整数变量的值进行互换的三种方法
- 如何用Class_forName方法动态加载构造方法带参数的类
- 如何用Class.forName方法动态加载构造方法带参数的类
- 如何用拼接的字符串调用javascript的变量或方法
- ASP.NET AJAX 中,如何用 JavaScript 调用服务器端的方法?
- PASCAL 比 c++ 略慢 几万倍
- 国债企债继续上行 长债投资热情较高
- 最近正在写规则
- 关于skin++
- C++ 字符串UTF8与GBK转化
- 如何用perform selector调用超过两个以上参数的方法
- 积极推动上市银行 进入交易所债市
- 当大格局遇到小格局
- 如何实现在页面中添加图片并马上显示出来
- 团队做项目该怎样分工
- oracle连接 左右
- 字符编码
- Source insight中文注释间隔太大的解决办法
- IE8和火狐4(1)