传递多个参数时,使用NSTimer进行错误访问

时间:2014-07-03 10:20:34

标签: ios objective-c xcode nstimer exc-bad-access

XCode Image while project is running

我已经接受了这个简单的NSTimer学习。它工作正常,没有任何参数。但是有两个参数就会导致访问不良。我是以正确的方式传递参数还是我错过了其他的东西。

虽然提到同一问题herehere,但没有一个问题正在解决。

代码正确性以及概念(为什么不好访问)将不胜感激。感谢。

@implementation ScreeLog1
-(void)tickTock{
    NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 2.0
                                                  target: self
                                                selector:@selector(onTick::)
                                                userInfo: [NSDictionary                                                  dictionaryWithObjectsAndKeys:
                                                           @"a",@"b", nil]                                              repeats:NO];

}

-(void)onTick:(NSString *)message1 :(NSString *)message2 {
    NSLog(@"%@****%@\n",message1,message2);
}
@end

是的,我正在使用ARC,Xcode5.1

1 个答案:

答案 0 :(得分:0)

传递给scheduledTimerWithTimeInterval方法的选择器只能有一个参数:NSTimer。您可以通过userInfo字典处理自定义参数。

试试这个:

-(void)tickTock{
    NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 2.0
                                                  target: self
                                                selector:@selector(onTick:)
                                                userInfo: [NSDictionary                                                  dictionaryWithObjectsAndKeys:
                                                           @"a",@"b",@"c",@"d", nil]
                                          repeats:NO];

}

-(void)onTick:(NSTimer *)timer {
    NSDictionary *userInfo = [timer userInfo];
    NSLog(@"%@*****%@\n", userInfo[@"b"], userInfo[@"d"]);
}