OC中@Selector传参总结
一、一般情况,使用 self performSelector:SEL withObject:id方法
- [self performSelectorOnMainThread:@selector(testAA:) withObject:[NSArray arrayWithObjects:@"1",@"2", nil 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];
- }
二、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"];
- }
三、UIButton类:通过设置tag来使用
- UIButton * markButton=[[UIButton alloc] initWithFrame:CGRectMake(280, 0, 30, 30)];
- markButton.tag=@"参数值"; //这里是你要传递的参数值
- [markButton addTarget:self action:@selector(addMark:) forControlEvents:UIControlEventTouchUpInside];
- -(BOOL) addMark:(UIButton *)btn {
- NSLog(@"%@",btn.tag];
- }