iOS之@selector的函數傳遞多個參數
1、一般情況,使用 self performSelector:SEL withObject:id方法
[self performSelectorOnMainThread:@selector(testAA:) withObject:[NSArray arrayWithObjects:@1,@2, 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];}
2、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];}
3、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];}