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