Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка платформы основы ссылка класса NSTimer

Опции
Развертывание Target:

На этой странице
Язык:

NSTimer

Вы используете NSTimer класс для создания объектов таймера или, проще, таймеры. Таймер ожидает, пока определенный временной интервал не протек и затем стреляет, отправляя указанное сообщение в целевой объект. Например, Вы могли создать NSTimer объект, отправляющий сообщение в окно, говоря ему обновить себя после определенного временного интервала.

Таймеры работают в сочетании с выполненными циклами. Для использования таймера эффективно необходимо знать, как выполненные циклы работают — посмотрите NSRunLoop и Поточная обработка Руководства по программированию. Отметьте в частности, что выполненные циклы поддерживают сильные ссылки к своим таймерам, таким образом, Вы не должны поддерживать свою собственную сильную ссылку к таймеру после добавления его к циклу выполнения.

Таймер не является механизмом в реальном времени; это стреляет только, когда один из режимов цикла выполнения, к которым был добавлен таймер, работает и способный проверить, передало ли время увольнения таймера. Из-за различных входных источников управляет типичный цикл выполнения, эффективное разрешение временного интервала для таймера ограничивается на порядке 50-100 миллисекунд. Если время увольнения таймера происходит во время длинной выноски или в то время как цикл выполнения находится в режиме, не контролирующем таймер, таймер не стреляет до следующего раза цикл выполнения проверяет таймер. Поэтому фактическое время, в которое огни таймера потенциально могут быть значительным промежутком времени после запланированного времени увольнения. См. также Допуск Таймера.

NSTimer “бесплатный соединенный мостом” с его Базовым дубликатом Основы, CFRunLoopTimerRef. Посмотрите Бесплатное Образование моста для получения дополнительной информации о бесплатном образовании моста.

Повторение по сравнению с неповторяющимися таймерами

Вы указываете, повторяется ли таймер или неповторяется во время создания. Неповторяющийся таймер стреляет один раз и затем лишает законной силы себя автоматически, таким образом препятствуя тому, чтобы таймер стрелял снова. В отличие от этого, повторяющийся таймер запускает и затем перепланирует себя на том же цикле выполнения.

Повторяющийся таймер всегда планирует себя на основе запланированного времени увольнения, в противоположность фактическому времени увольнения. Например, если таймер, как будут планировать, будет стрелять в определенное время и каждые 5 секунд после этого, то запланированное время увольнения будет всегда падать на исходные 5 интервалы второго раза, даже если будет задержано фактическое время увольнения. Если время увольнения задерживается до сих пор, что оно передает один или больше запланированных времен увольнения, таймер уволен только один раз за тот период времени; таймер тогда перепланируется, после увольнения, в следующий запланированный раз увольнения в будущем.

Допуск таймера

В iOS 7 и позже и OS X v10.9 и позже, можно указать допуск для таймера (tolerance). Разрешение войти системной гибкости, когда таймер огни улучшает возможность системы оптимизировать для увеличенной экономии электроэнергии и скорости отклика. Таймер может стрелять в любое время между его запланированной датой огня и запланированной датой огня плюс допуск. Таймер не будет стрелять перед запланированной датой огня. Для повторения таймеров следующая дата огня вычисляется с исходной даты огня независимо от допуска, примененного в отдельные времена огня, для предотвращения смещения. Значение по умолчанию является нулем, что означает, что не применяется никакой дополнительный допуск. Система сохраняет право применить мелкую сумму допуска к определенным таймерам независимо от значения свойства допуска.

Как пользователь таймера, у Вас будет лучшая идея того, каков надлежащий допуск для таймера может быть. Общее правило ползунка, тем не менее, состоит в том, чтобы установить допуск по крайней мере в 10% интервала для повторяющегося таймера. Даже мелкая сумма допуска окажет значительное позитивное влияние на использование питания Вашего приложения. Система может поместить максимальное значение допуска.

Планирование таймеров в выполненных циклах

Объект таймера может быть зарегистрирован только в одном выполненном цикле за один раз, несмотря на то, что это может быть добавлено к многократным режимам цикла выполнения в том цикле выполнения. Существует три способа создать таймер:

После того, как запланированный на цикл выполнения, таймер стреляет в указанный интервал, пока это не лишено законной силы. Неповторяющийся таймер сразу лишает законной силы себя после того, как он будет стрелять. Однако для повторяющегося таймера, необходимо лишить законной силы объект таймера сами путем вызова invalidate метод. Вызов этого метода запрашивает демонтаж таймера от текущего цикла выполнения; в результате необходимо всегда вызывать invalidate метод от того же потока, на котором был установлен таймер. Лишение законной силы таймера сразу отключает его так, чтобы это больше не влияло на цикл выполнения. Цикл выполнения тогда демонтирует таймер (и сильная ссылка, которую это имело к таймеру), любой как раз перед invalidate метод возвращается или в некоторой более поздней точке. После того, как лишенный законной силы, объекты таймера не могут быть снова использованы.

Разделение на подклассы примечаний

Вы не должны пытаться разделить на подклассы NSTimer.

Наследование


Соответствует


Оператор импорта


Swift

import Foundation

Objective C

@import Foundation;

Доступность


Доступный в OS X v10.0 и позже.
  • Создает и возвращает новое NSTimer объект и расписания это на текущем цикле выполнения в режиме по умолчанию.

    Объявление

    Swift

    class func scheduledTimerWithTimeInterval(_ seconds: NSTimeInterval, invocation invocation: NSInvocation, repeats repeats: Bool) -> NSTimer

    Objective C

    + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds invocation:(NSInvocation *)invocation repeats:(BOOL)repeats

    Параметры

    seconds

    Число секунд между взрывами таймера. Если seconds меньше чем или равно 0.0, этот метод выбирает неотрицательное значение 0,1 миллисекунд вместо этого.

    invocation

    Вызов для использования, когда стреляет таймер. Объект вызова поддерживает сильную ссылку к своим параметрам, пока таймер не лишен законной силы.

    repeats

    Если YEStrue, таймер будет неоднократно перепланировать себя, пока не лишено законной силы. Если NOfalse, таймер будет лишен законной силы после того, как он будет стрелять.

    Возвращаемое значение

    Новое NSTimer объект, сконфигурированный согласно указанным параметрам.

    Обсуждение

    После seconds секунды протекли, огни таймера, вызвав invocation.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Создает и возвращает новое NSTimer объект и расписания это на текущем цикле выполнения в режиме по умолчанию.

    Объявление

    Swift

    class func scheduledTimerWithTimeInterval(_ seconds: NSTimeInterval, target target: AnyObject, selector aSelector: Selector, userInfo userInfo: AnyObject?, repeats repeats: Bool) -> NSTimer

    Objective C

    + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

    Параметры

    seconds

    Число секунд между взрывами таймера. Если seconds меньше чем или равно 0.0, этот метод выбирает неотрицательное значение 0,1 миллисекунд вместо этого.

    target

    Объект, в который можно отправить сообщение, указанное aSelector когда стреляет таймер. Таймер поддерживает сильную ссылку к target до него (таймер) лишен законной силы.

    aSelector

    Сообщение для отправки к target когда стреляет таймер.

    Селектор должен иметь следующую подпись: timerFireMethod: (включая двоеточие, чтобы указать, что метод берет параметр). Таймер передает себя как параметр, таким образом метод принял бы следующий образец:

    • - (void)timerFireMethod:(NSTimer *)timer
    userInfo

    Пользовательская информация для таймера. Таймер поддерживает сильную ссылку к этому объекту до него (таймер) лишен законной силы. Этот параметр может быть nil.

    repeats

    Если YEStrue, таймер будет неоднократно перепланировать себя, пока не лишено законной силы. Если NOfalse, таймер будет лишен законной силы после того, как он будет стрелять.

    Возвращаемое значение

    Новое NSTimer объект, сконфигурированный согласно указанным параметрам.

    Обсуждение

    После seconds секунды протекли, огни таймера, отправив сообщение aSelector к target.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Создает и возвращает новое NSTimer объект инициализируется с указанным объектом вызова.

    Объявление

    Swift

    init(timeInterval seconds: NSTimeInterval, invocation invocation: NSInvocation, repeats repeats: Bool) -> NSTimer

    Objective C

    + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds invocation:(NSInvocation *)invocation repeats:(BOOL)repeats

    Параметры

    seconds

    Число секунд между взрывами таймера. Если seconds меньше чем или равно 0.0, этот метод выбирает неотрицательное значение 0,1 миллисекунд вместо этого

    invocation

    Вызов для использования, когда стреляет таймер. Таймер сообщает объекту вызова поддержать сильную ссылку к ее параметрам.

    repeats

    Если YEStrue, таймер будет неоднократно перепланировать себя, пока не лишено законной силы. Если NOfalse, таймер будет лишен законной силы после того, как он будет стрелять.

    Возвращаемое значение

    Новое NSTimer объект, сконфигурированный согласно указанным параметрам.

    Обсуждение

    Необходимо добавить новый таймер к циклу выполнения, с помощью addTimer:forMode:. Затем после seconds протекли, огни таймера, вызвав invocation. (Если таймер сконфигурирован для повторения, нет никакой потребности впоследствии повторно добавить таймер к циклу выполнения.)

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Создает и возвращает новое NSTimer объект, инициализированный с указанным объектом и селектором.

    Объявление

    Swift

    init(timeInterval seconds: NSTimeInterval, target target: AnyObject, selector aSelector: Selector, userInfo userInfo: AnyObject?, repeats repeats: Bool) -> NSTimer

    Objective C

    + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

    Параметры

    seconds

    Число секунд между взрывами таймера. Если seconds меньше чем или равно 0.0, этот метод выбирает неотрицательное значение 0,1 миллисекунд вместо этого.

    target

    Объект, в который можно отправить сообщение, указанное aSelector когда стреляет таймер. Таймер поддерживает сильную ссылку к этому объекту до него (таймер) лишен законной силы.

    aSelector

    Сообщение для отправки к target когда стреляет таймер.

    Селектор должен иметь следующую подпись: timerFireMethod: (включая двоеточие, чтобы указать, что метод берет параметр). Таймер передает себя как параметр, таким образом метод принял бы следующий образец:

    • - (void)timerFireMethod:(NSTimer *)timer
    userInfo

    Пользовательская пользовательская информация для таймера.

    Таймер поддерживает сильную ссылку к этому объекту до него (таймер) лишен законной силы. Этот параметр может быть nil.

    repeats

    Если YEStrue, таймер будет неоднократно перепланировать себя, пока не лишено законной силы. Если NOfalse, таймер будет лишен законной силы после того, как он будет стрелять.

    Возвращаемое значение

    Новое NSTimer объект, сконфигурированный согласно указанным параметрам.

    Обсуждение

    Необходимо добавить новый таймер к циклу выполнения, с помощью addTimer:forMode:. Затем после seconds секунды протекли, огни таймера, отправив сообщение aSelector к target. (Если таймер сконфигурирован для повторения, нет никакой потребности впоследствии повторно добавить таймер к циклу выполнения.)

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Инициализирует новое NSTimer объект с помощью указанного объекта и селектора.

    Объявление

    Swift

    init(fireDate date: NSDate, interval seconds: NSTimeInterval, target target: AnyObject, selector aSelector: Selector, userInfo userInfo: AnyObject?, repeats repeats: Bool)

    Objective C

    - (instancetype)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

    Параметры

    date

    Время, в которое должен сначала выстрелить таймер.

    seconds

    Для повторяющегося таймера этот параметр содержит число секунд между взрывами таймера. Если seconds меньше чем или равно 0.0, этот метод выбирает неотрицательное значение 0,1 миллисекунд вместо этого.

    target

    Объект, в который можно отправить сообщение, указанное aSelector когда стреляет таймер. Таймер поддерживает сильную ссылку к этому объекту до него (таймер) лишен законной силы.

    aSelector

    Сообщение для отправки к target когда стреляет таймер.

    Селектор должен иметь следующую подпись: timerFireMethod: (включая двоеточие, чтобы указать, что метод берет параметр). Таймер передает себя как параметр, таким образом метод принял бы следующий образец:

    • - (void)timerFireMethod:(NSTimer *)timer
    userInfo

    Пользовательская пользовательская информация для таймера. Таймер поддерживает сильную ссылку к этому объекту до него (таймер) лишен законной силы. Этот параметр может быть nil.

    repeats

    Если YEStrue, таймер будет неоднократно перепланировать себя, пока не лишено законной силы. Если NOfalse, таймер будет лишен законной силы после того, как он будет стрелять.

    Возвращаемое значение

    Получатель, инициализированный таким образом, что, когда добавлено к циклу выполнения, это выстрелит в date и затем, если repeats YEStrue, каждый seconds после этого.

    Обсуждение

    Необходимо добавить новый таймер к циклу выполнения, с помощью addTimer:forMode:. После увольнения таймер отправляет сообщение aSelector к target. (Если таймер сконфигурирован для повторения, нет никакой потребности впоследствии повторно добавить таймер к циклу выполнения.)

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.2 и позже.

  • Заставляет сообщение получателя быть отправленным в его цель.

    Объявление

    Swift

    func fire()

    Objective C

    - (void)fire

    Обсуждение

    Можно использовать этот метод для увольнения повторяющегося таймера, не прерывая его регулярное расписание увольнения. Если таймер неповторяется, он автоматически лишен законной силы после увольнения, даже если не поступила его запланированная дата огня.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • Останавливает получатель от когда-либо увольнения снова и запрашивает его удаление из его цикла выполнения.

    Объявление

    Swift

    func invalidate()

    Objective C

    - (void)invalidate

    Обсуждение

    Этот метод является единственным способом удалить таймер из NSRunLoop объект. NSRunLoop объект удаляет свою сильную ссылку к таймеру, любой как раз перед invalidate метод возвращается или в некоторой более поздней точке.

    Если это было сконфигурировано с целью и пользовательскими информационными объектами, получатель удаляет свои сильные ссылки к тем объектам также.

    Специальные замечания

    Необходимо отправить это сообщение от потока, на котором был установлен таймер. При отправке этого сообщения от другого потока входной источник, связанный с таймером, не может быть удален из его цикла выполнения, который мог препятствовать тому, чтобы поток вышел должным образом.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

    См. также

    – огонь

  • Булево значение, указывающее, в настоящее время допустим ли получатель. (только для чтения)

    Объявление

    Swift

    var valid: Bool { get }

    Objective C

    @property(readonly, getter=isValid) BOOL valid

    Обсуждение

    YEStrue если получатель все еще способен к увольнению или NOfalse если таймер был лишен законной силы и больше не способен к увольнению.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.10 и позже.

  • fireDate fireDate Свойство

    Дата, в которую выстрелит таймер.

    Объявление

    Swift

    @NSCopying var fireDate: NSDate

    Objective C

    @property(copy) NSDate *fireDate

    Обсуждение

    Если таймер больше не действителен, последняя дата, в которую выстрелил таймер.

    Можно установить это свойство для корректировки времени увольнения повторяющегося таймера. Несмотря на то, что сброс следующего времени увольнения таймера является относительно дорогой работой, это может быть более эффективно в некоторых ситуациях. Например, Вы могли использовать его в ситуациях, где Вы хотите повторить действие многократно в будущем, но в неправильных временных интервалах. Корректировка времени увольнения единственного таймера, вероятно, подверглась бы меньшему количеству расхода, чем создание многократных объектов таймера, планирование каждого на цикле выполнения и затем уничтожении их.

    Вы не должны изменять дату огня таймера, лишенного законной силы, который включает уже стрелявшие неповторяющиеся таймеры. Вы могли потенциально изменить дату огня неповторяющегося таймера, еще не стрелявшего, несмотря на то, что необходимо всегда делать так от потока, до которого таймер присоединен, избегают потенциальных условий состязания.

    Используйте isValid метод, чтобы проверить, что таймер допустим.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • timeInterval timeInterval Свойство

    Временной интервал таймера. (только для чтения)

    Объявление

    Swift

    var timeInterval: NSTimeInterval { get }

    Objective C

    @property(readonly) NSTimeInterval timeInterval

    Обсуждение

    Если получатель является неповторяющимся таймером, возвратами 0 даже если был установлен временной интервал.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • userInfo userInfo Свойство

    Получатель userInfo объект. (только для чтения)

    Объявление

    Swift

    var userInfo: AnyObject? { get }

    Objective C

    @property(readonly, retain) id userInfo

    Обсуждение

    Не получайте доступ к этому свойству после того, как таймер будет лишен законной силы. Использовать isValid протестировать, допустим ли таймер.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.0 и позже.

  • допуск допуск Свойство

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

    Объявление

    Swift

    var tolerance: NSTimeInterval

    Objective C

    @property NSTimeInterval tolerance

    Обсуждение

    Значение по умолчанию является нулем, что означает, что не применяется никакой дополнительный допуск.

    Установка допуска для таймера позволяет ему стрелять позже, чем запланированная дата огня. Разрешение войти системной гибкости, когда таймер стреляет, увеличивает возможность системы оптимизировать для увеличенной экономии электроэнергии и скорости отклика.

    Таймер может стрелять в любое время между его запланированной датой огня и запланированной датой огня плюс допуск. Таймер не будет стрелять перед запланированной датой огня. Для повторения таймеров следующая дата огня вычисляется с исходной даты огня независимо от допуска, примененного в отдельные времена огня, для предотвращения смещения. Система сохраняет право применить мелкую сумму допуска к определенным таймерам независимо от значения этого свойства.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.9 и позже.