我已经接受了这个简单的NSTimer学习。它工作正常,没有任何参数。但是有两个参数就会导致访问不良。我是以正确的方式传递参数还是我错过了其他的东西。
虽然提到同一问题here和here,但没有一个问题正在解决。
代码正确性以及概念(为什么不好访问)将不胜感激。感谢。
@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
答案 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"]);
}