iOS之@selector的函数传递多个参数

1、一般情况,使用 self performSelector:SEL withObject:id方法

[self performSelectorOnMainThread:@selector(testAA:) withObject:[NSArray arrayWithObjects:@"1",@"2", nil] waitUntilDone:NO];

-(void) testAA:(NSArray*)data{

    if (data==nil||data.count!=2) {
        return;
    }
    NSInteger num=[(NSString*)data[0] intValue];
    NSInteger index=[data[1] intValue];
}

2、NSTimer:将传参的对象储存在了NSTimer的userInfo的字典中。

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:oldView forKey:@"oldView"];
[NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(onTimer:) userInfo:dict repeats:NO];
[dict release];

- (void)onTimer:(NSTimer *)timer {
    UIView *oldView = [[timer userInfo] objectForKey:@"oldView"];
}

3、UIButton类:通过设置tag来使用

UIButton * markButton=[[UIButton alloc] initWithFrame:CGRectMake(280, 0, 30, 30)];
[email protected]"参数值"; //这里是你要传递的参数值
[markButton addTarget:self action:@selector(addMark:)  forControlEvents:UIControlEventTouchUpInside];

-(BOOL) addMark:(UIButton *)btn {
    NSLog(@"%@",btn.tag];
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-08 01:26:39

iOS之@selector的函数传递多个参数的相关文章

ios开发@selector的函数如何传参数/如何传递多个参数

不同的类会有不同的传递方式,参数名也不尽相同.如果是传单个参数的就不用集合,如果是传多个参数可以用类似nsarray,nsdictionary之类的集合传递.看下面例子: 例子1: 通过NSTimer看IPhone对@selector的函数如何传参数, NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; if(oldView != nil) { [dict setObject:oldView forKey:@"oldVi

js拼装字符串中调用函数传递多个参数。

var txt = '<button href="javascript:void(0);" onclick="editItemXmys(\''+row.XMYS_ID+"','"+row.ITEM_NO+'\')" class="iput_m" style="width: 40px; height: 20px;">' + '修改' + '</button>'; 原文地址:https:

黑马程序员——c语言学习心得——函数传递二维数组

黑马程序员——c语言学习心得——函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.   变量定义的时候给变量初始化,这是保证不出错的一个很好的习惯.尤其是在指针的使用上,如果我们没有给指针初始化,就会出现野指针,该指针的指向并不是我们所希望的,一旦错误的释放了这个指针,就会发生内存的访问.那么如何初始化指针变量呢,一般有以下几种方法:   1.初始化空指针   int* pInteger=N

iOS 温故知新之 Main函数和UIApplication

如同C/C++程序都有一个入口函数Main函数一样,iOS app开发也有相同的入口main函数. 然而今天发现在修改老版本的程序发现,跟新版xcode创建出来的main函数有一点不同 这是现在使用Xcode6.3创建的main函数代码: int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate cl

ios 页面跳转之间传递数据----通过delegate

主要参考了这篇博客http://mobile.51cto.com/iphone-284116.htm 主要用到了,两个类,一个delegate a类,调用b类,当b类执行之后,需要把一个数据传递给a类,a类把这个数据显示出来. 1.delegate,就这一个头文件就足够了.在类中去实现这个代理方法 #import <Foundation/Foundation.h> @protocolUIViewPassValueDelegate - (void)passValue:(NSString*)val

iOS 兼容性 判断新版本函数可用

在关于ios兼容性问题的时候,可能应用是4.0那么5.0新的函数就不能调用 : 我们可以判断该函数是否能调用来判断: if([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { //如果版本支持这个函数则调用 这个函数是5.0之后的用来设置navigationBar的背景图片 5.0之前不支持 [self.navigationCont

luaj luaoc 回调函数传递的一些小总结

问题场景:我们的游戏在支付时,由于第三方支付比较费时,可能在支付的过程中,我们lua写的cocos2dx项目会断网,我们的游戏有自动重连的机制.我就想,如果断线好了以后,支付完成了,那在断网之前传入的回调函数是否能被成功执行到呢? 就在网上发现了这篇文章 http://dualface.github.io/blog/2013/01/01/call-java-from-lua/#lua20function20E79A84E5BC95E794A8E8AEA1E695B0E599A8 , 个人觉得写的

js中函数传递参数,究竟是值传递还是引用传递?

记住真理: js函数传递参数,不管是简单数据类型,还是引用数据类型,都是值传递!! 下面是js红包书里面的例子: function setName(obj) { obj.name = "Nicholas"; obj = new Object(); obj.name = "Greg"; } var person = new Object(); setName(person); alert(person.name); // "Nicholas" 肯定

[iOS逆向实战 之三]函数之基本类型(int)参数传递

个人原创,转帖请注明来源:cnblogs.com/jailbreaker 在这[iOS逆向实战 之一]中讲到函数调用的参数传递通过r0-r3来实现,这篇帖子我们来验证下.先看一个4个参数的函数代码: main方法简单调用compute方法,先看main的汇编代码: 明显可以看出,参数值1,2,3,4分别传递给r0-r3,然后通过b调用函数 compute,接着看下compute的汇编代码: 最后一行 是返回到 调用者的下一行,之前帖子已经学过了,前面面3条代注释如下: add r0, r1