инкремент NSTimer - PullRequest
       2

инкремент NSTimer

0 голосов
/ 19 марта 2011

У меня есть этот метод в моем приложении:

- (void)initializeTimer{
    self.myTimer = [NSTimer scheduledTimerWithTimeInterval:theInterval target:self 
                               selector:@selector(move:) userInfo:nil repeats:YES];
}

Я заметил, что если я изменяю интервал, таймер все еще остается со старым значением.

Ответы [ 2 ]

3 голосов
/ 20 марта 2011

Я заметил, что если я изменил интервал, таймер все еще со старым значением.

Это потому, что вызов функций в C и отправка сообщений в Objective-C являются передачей по значению, а не передачей по имени. Вы не передаете свою переменную theInterval; вы передаете значение, которое находится в этой переменной в то время. Метод получает только значение; он не знает, откуда вы могли его передать. Помещение другого значения в переменную theInterval или в любое другое хранилище не влияет на таймер, потому что таймер не знает или не заботится об этой переменной или о чем-либо еще вне себя.

Единственный способ изменить интервал таймера - это отправить ему сообщение setTimeInterval:, и, как сказал Марк В. в своем ответе, и когда документы будут архивироваться, объекты NSTimer не реагируют на такое сообщение. Таким образом, нет способа изменить интервал существующего таймера.

3 голосов
/ 19 марта 2011

Вы не можете изменить интервал после создания таймера.Посмотрите документы NSTimer на сайте Apple.Вам придется сделать недействительным и отпустить таймер, а затем создать новый с новым интервалом.

...