Создание NSTimer с переменным интервалом с помощью метода-оболочки не работает - PullRequest
1 голос
/ 04 ноября 2010

Я пытаюсь создать NSTimer с помощью метода-оболочки, чтобы я мог сделать его недействительным и заменить его новым NSTimer с другим интервалом. Вот мой код:

- (void) createTimerWithInterval:(float *)interval{

    self.timer = [NSTimer scheduledTimerWithTimeInterval:[[NSNumber numberWithFloat: interval]floatValue] target:self selector:@selector(scrollWrapperForTimer) userInfo:nil repeats:YES];
}

Я получаю следующий результат от компилятора. Зачем?

несовместимый тип для аргумента 1 'numberWithFloat'.

Ответы [ 3 ]

4 голосов
/ 04 ноября 2010

Вы должны передавать интервал по значению, а не по ссылке:

- (void) createTimerWithInterval:(float)interval{

Но ваш код также может быть упрощен таким образом:

- (void) createTimerWithInterval:(float)interval{

    self.timer = [NSTimer scheduledTimerWithTimeInterval:interval
                                                  target:self
                                                selector:@selector(scrollWrapperForTimer)
                                                userInfo:nil
                                                 repeats:YES];
}

Не для того, чтобы быть резким, но ваш код достаточно неловкий, чтобы показать, что вы пропустили концепцию где-то в Objective-C. Было бы разумно выяснить, что это такое, и взять это.

2 голосов
/ 04 ноября 2010

Вы уверены, что хотите передать указатель на число с плавающей точкой?

2 голосов
/ 04 ноября 2010

numberWithFloat: принимает аргумент с плавающей точкой, но вы передаете ему указатель на число с плавающей точкой.

Вместо этого вы можете передать * интервал в numberWithFloat: передать значение с плавающей точкой вместо указателя назначение.

...