2012-03-01 4 views
1

Я знаю, что информация пользователя используется для передачи параметра, но как передать более одного из них?Как передать более одного параметра селектору в 'scheduleTimerWithTimeInterval: target: selector: userInfo: repeat:'

Я предполагаю, что мне нужно использовать объект, но поскольку я довольно новичок в объективе-c, я действительно не знаю, правильно ли это и как это сделать?

Спасибо!

ответ

4

Создайте объект-обертку, NSArray или NSDictionary с несколькими объектами, которые необходимо передать и передать этому оберточному объекту в userInfo. На получателе извлекают объекты из объекта-обертки.

Пример кода с использованием NSDictionary для оболочки:

телефонный код:

NSString *obj1 = @"string1"; 
NSString *obj2 = @"string2"; 
NSDictionary *wrapper = [NSDictionary dictionaryWithObjectsAndKeys:obj1, @"Object1", obj2, @"Object2", nil]; 
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFireMethod:) userInfo:wrapper repeats:NO]; 

Получение кода таймера:

- (void)timerFireMethod:(NSTimer*)theTimer { 
    NSDictionary *wrapper = (NSDictionary *)[theTimer userInfo]; 
    NSString * obj1 = [wrapper objectForKey:@"Object1"]; 
    NSString * obj2 = [wrapper objectForKey:@"Object2"]; 
    // ... 
}