如何将多个参数传递给“scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:”中的选择器

Posted

技术标签:

【中文标题】如何将多个参数传递给“scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:”中的选择器【英文标题】:How do I pass more than one parameter to the selector in 'scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:' 【发布时间】:2012-03-01 11:46:19 【问题描述】:

我知道用户信息用于传递参数,但如何传递多个参数?

我猜我必须使用一个对象,但由于我对 Objective-c 还很陌生,我真的不知道这是否正确以及如何去做?

谢谢!

【问题讨论】:

【参考方案1】:

创建一个包装器对象,一个NSArrayNSDictionary,其中包含您需要传递的多个对象,并在userInfo 中传递该包装器对象。在接收器上从包装器对象中检索对象。

使用 NSDictionary 作为包装器的示例代码:

调用代码:

NSString *obj1 = @"string1"; 
NSString *obj2 = @"string2"; 
NSDictionary *wrapper = [NSDictionary dictionaryWithObjectsAndKeys:obj1, @"Object1", obj2, @"Object2", nil];
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFireMethod:) userInfo:wrapper repeats:NO];

接收定时器代码:

- (void)timerFireMethod:(NSTimer*)theTimer 
    NSDictionary *wrapper = (NSDictionary *)[theTimer userInfo];
    NSString * obj1 = [wrapper objectForKey:@"Object1"];
    NSString * obj2 = [wrapper objectForKey:@"Object2"];
    // ...

【讨论】:

以上是关于如何将多个参数传递给“scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:”中的选择器的主要内容,如果未能解决你的问题,请参考以下文章

如何将多个参数传递给 Process?

如何将多个参数传递给 ASP.NET Core 中的 get 方法

如何将命令输出作为多个参数传递给另一个命令

如何将多个字符串参数传递给 PowerShell 脚本?

如何将动态参数传递给 testNG.xml 运行多个测试

Python:如何将多个参数传递给属性 getter?