Как пройти более одного параметра к селектору в «SchedleleDTimerWithTimeInterVal»: Target: Selector: UserInfo: повторяется: '

StackOverflow https://stackoverflow.com/questions/9515591

Вопрос

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

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

Спасибо!

Это было полезно?

Решение

Create a wrapper object, an NSArray or NSDictionary with the multiple objects you need to pass and pass that wrapper object in userInfo. On the receiver retrieve the objects from the wrapper object.

Example code using a NSDictionary for the wrapper:

Calling code:

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];

Receiving timer code:

- (void)timerFireMethod:(NSTimer*)theTimer {
    NSDictionary *wrapper = (NSDictionary *)[theTimer userInfo];
    NSString * obj1 = [wrapper objectForKey:@"Object1"];
    NSString * obj2 = [wrapper objectForKey:@"Object2"];
    // ...
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top