Ios 传递多个参数时,NSTimer访问错误

Ios 传递多个参数时,NSTimer访问错误,ios,objective-c,xcode,nstimer,exc-bad-access,Ios,Objective C,Xcode,Nstimer,Exc Bad Access,我已经归结到这个简单的NSTimer学习。它工作正常,没有任何参数。但有两个参数,它抛出了坏访问。我是以正确的方式传递参数,还是遗漏了其他内容 虽然已经提到了同样的问题,但没有一个是解决这个问题的目的 代码正确性以及为什么访问不好将受到赞赏。谢谢 @implementation ScreeLog1 -(void)tickTock{ NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 2.0

我已经归结到这个简单的NSTimer学习。它工作正常,没有任何参数。但有两个参数,它抛出了坏访问。我是以正确的方式传递参数,还是遗漏了其他内容

虽然已经提到了同样的问题,但没有一个是解决这个问题的目的

代码正确性以及为什么访问不好将受到赞赏。谢谢

@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

传递给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"]);
}