Как передать более одного параметра селектору в 'scheduleTimerWithTimeInterval: target: selector: userInfo: repeatats:' - PullRequest
1 голос
/ 01 марта 2012

Я знаю, что информация пользователя используется для передачи параметра, но как мне передать более одного из них?

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

Спасибо!

1 Ответ

4 голосов
/ 01 марта 2012

Создайте объект-оболочку, 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"];
    // ...
}
...