NSMethodSignature和NSInvocation的使用
来源:互联网 发布:tourex旅游网站源码 编辑:程序博客网 时间:2024/04/29 21:26
动态调用方法时会用到,例子
-(NSString *)myMethod:(NSString *)param1 withParam2:(NSNumber *)param2
{
NSString *result = @"objc";
NSLog(@"par = %@",param1);
NSLog(@"par 2 = %@",param2);
return result;
}
-(void)invokeMyMethodDynamically
{
SEL selector = @selector(myMethod:withParam2:);
NSMethodSignature *methodSignature = [[self class] instanceMethodSignatureForSelector:selector];//获得类和方法的签名
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSignature];
//从签名获得调用对象
[invocation setTarget:self];
//设置target
[invocation setSelector:selector];//设置selector
NSString *returnValue = nil;
NSString *argument1 = @"fist";
NSNumber *argument2 = [NSNumber numberWithInt:102];
[invocation setArgument:&argument1 atIndex:2];//设置参数,第一个参数index为2
[invocation setArgument:&argument2 atIndex:3];
[invocation retainArguments];//retain一遍参数
[invocation invoke];//调用
[invocation getReturnValue:&returnValue];//得到返回值,此时不会再调用,只是返回值
NSLog(@"return value = %@",returnValue);
}
另外一个例子:
NSMethodSignature *signature = [MyObject instanceMethodSignatureF
NSInvocation *invocation = [NSInvocation invocationWithMethodSign
[invocation setSelector:selector];
NSString *str1 = @"someString";
NSString *str2 = @"someOtherString";
//The invocation object must retain its arguments
[str1 retain];
[str2 retain];
//Set the arguments
[invocation setTarget:targetInstance];
[invocation setArgument:&str1 atIndex:2];
[invocation setArgument:&str2 atIndex:3];
[NSTimer scheduledTimerWithTimeIn
- NSMethodSignature和NSInvocation的使用
- NSMethodSignature和NSInvocation的使用
- NSMethodSignature和NSInvocation的使用
- NSMethodSignature和NSInvocation的使用
- NSMethodSignature和NSInvocation的使用
- NSMethodSignature和NSInvocation的使用
- NSMethodSignature和NSInvocation使用
- NSMethodSignature和NSInvocation的用法
- NSMethodSignature和NSInvocation的用法
- NSMethodSignature和NSInvocation的用法
- 使用NSMethodSignature和NSInvocation实现消息转发
- 使用NSMethodSignature和NSInvocation实现消息转发
- 使用NSMethodSignature和NSInvocation实现消息转发
- NSInvocation、NSMethodSignature 的介绍及使用
- NSInvocation、NSMethodSignature 的介绍及使用
- NSMethodSignature和NSInvocation
- performSelector,带多个参数,NSInvocation, NSMethodSignature
- NSMethodSignature、NSInvocation进行消息转发
- 数据库事务的四个基本性质
- Apache Lucene与Lucene.Net——全文检索服务器
- 分段函数求解 函数方法
- 如何查看一个运行的exe执行程序需要有哪些DLL动态链接库
- 【STL】istream_iterator详解
- NSMethodSignature和NSInvocation的使用
- 倒排索引 - C/C++
- 同步工具类
- 泛型的理解
- 逃出你的肖申克(三):遇见20万年前的自己
- 利用API发送和接收消息,本代码测试全通过
- Android之指南针学习
- java 基础之I/O流
- 大家一起学C++(3)