Ссылка CFRunLoopTimer
Объект CFRunLoopTimer представляет специализированный источник цикла выполнения, стреляющий в заданное время в будущее. Таймеры могут стрелять или только один раз или неоднократно в фиксированных временных интервалах. Повторение таймеров может также иметь их следующее время увольнения, вручную скорректированное.
Таймер не является механизмом в реальном времени; это стреляет только, когда один из режимов цикла выполнения, к которым был добавлен таймер, работает и способный проверить, передало ли время увольнения таймера. Если время увольнения таймера происходит, в то время как цикл выполнения находится в режиме, не контролирующем таймер или во время длинной выноски, таймер не стреляет до следующего раза цикл выполнения проверяет таймер. Поэтому фактическое время, в которое огни таймера потенциально могут быть значительным промежутком времени после запланированного времени увольнения.
Повторяющийся таймер перепланирует себя на основе запланированного времени увольнения, не фактического времени увольнения. Например, если таймер, как будут планировать, будет стрелять в определенное время и каждые 5 секунд после этого, то запланированное время увольнения будет всегда падать на исходные 5 интервалы второго раза, даже если будет задержано фактическое время увольнения. Если время увольнения задерживается до сих пор, что оно передает один или больше запланированных времен увольнения, таймер уволен только один раз за тот период времени; таймер тогда перепланируется, после увольнения, в следующий запланированный раз увольнения в будущем.
Каждый таймер цикла выполнения может быть зарегистрирован только в одном выполненном цикле за один раз, несмотря на то, что это может быть добавлено к многократным режимам цикла выполнения в том цикле выполнения.
CFRunLoopTimer “бесплатный соединенный мостом” с его дубликатом Основы Какао, NSTimer
. Это означает, что Базовый тип Основы является взаимозаменяемым в вызовах функции или вызовах метода с соединенным мостом объектом Основы. Поэтому в методе, где Вы видите NSTimer *
параметр, можно передать в a CFRunLoopTimerRef
, и в функции, где Вы видите a CFRunLoopTimerRef
параметр, можно передать в NSTimer
экземпляр. Это также применяется к конкретным подклассам NSTimer
. Посмотрите Бесплатные Соединенные мостом Типы для получения дополнительной информации о бесплатном образовании моста.
-
Создает новый объект CFRunLoopTimer с основанным на блоке обработчиком.
Объявление
Swift
func CFRunLoopTimerCreateWithHandler(_
allocator
: CFAllocator!, _fireDate
: CFAbsoluteTime, _interval
: CFTimeInterval, _flags
: CFOptionFlags, _order
: CFIndex, _block
: ((CFRunLoopTimer!) -> Void)!) -> CFRunLoopTimer!Objective C
CFRunLoopTimerRef CFRunLoopTimerCreateWithHandler ( CFAllocatorRef allocator, CFAbsoluteTime fireDate, CFTimeInterval interval, CFOptionFlags flags, CFIndex order, void (^block)( CFRunLoopTimerRef timer) );
Параметры
allocator
Средство выделения для использования для выделения памяти для нового объекта. Передача
NULL
илиkCFAllocatorDefault
использовать текущее средство выделения по умолчанию.fireDate
Время, в которое должен сначала выстрелить таймер. Если существуют причины реализации сделать так, прекрасная точность (подмиллисекунда самое большее) даты огня может быть скорректирована немного таймером.
interval
Интервал увольнения таймера. Если
0
или отрицательный, огни таймера один раз и затем автоматически лишен законной силы. Если причины реализации сделать так существуют, прекрасная точность (подмиллисекунда самое большее) интервала может быть скорректирована немного таймером.flags
В настоящее время игнорируемый. Передача
0
для будущей совместимости.order
Показатель приоритета, указывающий порядок, в котором обрабатываются выполненные таймеры цикла. Выполненные таймеры цикла в настоящее время игнорируют этот параметр. Передача
0
.block
Когда таймер стреляет, блок вызвал. Блок берет один параметр:
timer
Стреляющий таймер цикла выполнения.
Возвращаемое значение
Новый объект CFRunLoopTimer. Владение соблюдает Создать Правило, описанное в Политике Владения.
Обсуждение
Таймер должен быть добавлен к режиму цикла выполнения, прежде чем он будет стрелять. Для добавления таймера к циклу выполнения использовать
CFRunLoopAddTimer
. Таймер может быть зарегистрирован только к одному выполненному циклу за один раз, несмотря на то, что это может быть в многократных режимах в том цикле выполнения.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.7 и позже.
-
Создает новый объект CFRunLoopTimer с функциональным обратным вызовом.
Объявление
Swift
func CFRunLoopTimerCreate(_
allocator
: CFAllocator!, _fireDate
: CFAbsoluteTime, _interval
: CFTimeInterval, _flags
: CFOptionFlags, _order
: CFIndex, _callout
: CFRunLoopTimerCallBack, _context
: UnsafeMutablePointer<CFRunLoopTimerContext>) -> CFRunLoopTimer!Objective C
CFRunLoopTimerRef CFRunLoopTimerCreate ( CFAllocatorRef allocator, CFAbsoluteTime fireDate, CFTimeInterval interval, CFOptionFlags flags, CFIndex order, CFRunLoopTimerCallBack callout, CFRunLoopTimerContext *context );
Параметры
allocator
Средство выделения для использования для выделения памяти для нового объекта. Передача
NULL
илиkCFAllocatorDefault
использовать текущее средство выделения по умолчанию.fireDate
Время, в которое должен сначала выстрелить таймер. Если существуют причины реализации сделать так, прекрасная точность (подмиллисекунда самое большее) даты огня может быть скорректирована немного таймером.
interval
Интервал увольнения таймера. Если
0
или отрицательный, огни таймера один раз и затем автоматически лишен законной силы. Если причины реализации сделать так существуют, прекрасная точность (подмиллисекунда самое большее) интервала может быть скорректирована немного таймером.flags
В настоящее время игнорируемый. Передача
0
для будущей совместимости.order
Показатель приоритета, указывающий порядок, в котором обрабатываются выполненные таймеры цикла. Выполненные таймеры цикла в настоящее время игнорируют этот параметр. Передача
0
.callout
Функция обратного вызова, которую вызывают, когда стреляет таймер.
context
Структура, содержащая контекстную информацию для таймера цикла выполнения. Функция копирует информацию из структуры, таким образом, память, которой указывают
context
не должен сохраняться вне вызова функции. Может бытьNULL
если для функции обратного вызова не нужен контекстinfo
указатель для отслеживания состояние.Возвращаемое значение
Новый объект CFRunLoopTimer. Владение соблюдает Создать Правило.
Обсуждение
Таймер должен быть добавлен к режиму цикла выполнения, прежде чем он будет стрелять. Для добавления таймера к циклу выполнения использовать
CFRunLoopAddTimer
. Таймер может быть зарегистрирован только к одному выполненному циклу за один раз, несмотря на то, что это может быть в многократных режимах в том цикле выполнения.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает булево значение, указывающее, возражает ли CFRunLoopTimer повторениям.
Объявление
Swift
func CFRunLoopTimerDoesRepeat(_
timer
: CFRunLoopTimer!) -> BooleanObjective C
Boolean CFRunLoopTimerDoesRepeat ( CFRunLoopTimerRef timer );
Параметры
timer
Таймер цикла выполнения для тестирования.
Возвращаемое значение
true
еслиtimer
повторения, или имеет периодичность; иначеfalse
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает контекстную информацию для объекта CFRunLoopTimer.
Объявление
Swift
func CFRunLoopTimerGetContext(_
timer
: CFRunLoopTimer!, _context
: UnsafeMutablePointer<CFRunLoopTimerContext>)Objective C
void CFRunLoopTimerGetContext ( CFRunLoopTimerRef timer, CFRunLoopTimerContext *context );
Параметры
timer
Таймер цикла выполнения для исследования.
context
Указатель тот, на структуру, в который контекстная информация для
timer
должен быть скопирован. Возвращаемой информацией является та же информация, переданнаяCFRunLoopTimerCreate
при созданииtimer
.Обсуждение
Номер версии контекста для выполненных таймеров цикла в настоящее время 0. Прежде, чем вызвать эту функцию, необходимо инициализировать
version
элементcontext
к0
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает интервал увольнения повторяющегося объекта CFRunLoopTimer.
Объявление
Swift
func CFRunLoopTimerGetInterval(_
timer
: CFRunLoopTimer!) -> CFTimeIntervalObjective C
CFTimeInterval CFRunLoopTimerGetInterval ( CFRunLoopTimerRef timer );
Параметры
timer
Таймер цикла выполнения для исследования.
Возвращаемое значение
Интервал увольнения
timer
. Возвраты0
еслиtimer
не повторяется.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращается в следующий раз увольнения для объекта CFRunLoopTimer.
Объявление
Swift
func CFRunLoopTimerGetNextFireDate(_
timer
: CFRunLoopTimer!) -> CFAbsoluteTimeObjective C
CFAbsoluteTime CFRunLoopTimerGetNextFireDate ( CFRunLoopTimerRef timer );
Параметры
timer
Таймер цикла выполнения для исследования.
Возвращаемое значение
В следующий раз увольнения для
timer
. Это время могло быть датой в прошлом, если цикл выполнения не был в состоянии обработать таймер, так как наступило время увольнения.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает параметр упорядочивания для объекта CFRunLoopTimer.
Объявление
Swift
func CFRunLoopTimerGetOrder(_
timer
: CFRunLoopTimer!) -> CFIndexObjective C
CFIndex CFRunLoopTimerGetOrder ( CFRunLoopTimerRef timer );
Параметры
timer
Таймер цикла выполнения для исследования.
Возвращаемое значение
Параметр упорядочивания для
timer
.Обсуждение
Параметр упорядочивания в настоящее время игнорируется выполненными таймерами цикла.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает идентификатор типа CFRunLoopTimer непрозрачный тип.
Объявление
Swift
func CFRunLoopTimerGetTypeID() -> CFTypeID
Objective C
CFTypeID CFRunLoopTimerGetTypeID ( void );
Возвращаемое значение
Идентификатор типа для CFRunLoopTimer непрозрачный тип.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Лишает законной силы объект CFRunLoopTimer, останавливая его от когда-либо увольнения снова.
Объявление
Swift
func CFRunLoopTimerInvalidate(_
timer
: CFRunLoopTimer!)Objective C
void CFRunLoopTimerInvalidate ( CFRunLoopTimerRef timer );
Параметры
timer
Таймер цикла выполнения для лишения законной силы.
Обсуждение
После того, как лишенный законной силы,
timer
никогда не будет запускать и вызывать его функцию обратного вызова снова. Эта функция автоматически удаляетtimer
от всех режимов цикла выполнения, в которых это было добавлено. Память не освобождена, если цикл выполнения не содержал единственную ссылку наtimer
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает булево значение, указывающее, допустим ли объект CFRunLoopTimer и в состоянии стрелять.
Объявление
Swift
func CFRunLoopTimerIsValid(_
timer
: CFRunLoopTimer!) -> BooleanObjective C
Boolean CFRunLoopTimerIsValid ( CFRunLoopTimerRef timer );
Параметры
timer
Таймер цикла выполнения для исследования.
Возвращаемое значение
true
еслиtimer
допустимо; иначеfalse
.Обсуждение
Неповторяющийся таймер автоматически лишен законной силы после того, как он будет стрелять.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Назначает следующую дату увольнения для объекта CFRunLoopTimer.
Объявление
Swift
func CFRunLoopTimerSetNextFireDate(_
timer
: CFRunLoopTimer!, _fireDate
: CFAbsoluteTime)Objective C
void CFRunLoopTimerSetNextFireDate ( CFRunLoopTimerRef timer, CFAbsoluteTime fireDate );
Параметры
timer
Таймер цикла выполнения для изменения.
fireDate
Новое время увольнения для
timer
.Обсуждение
Сброс следующего времени увольнения таймера является относительно дорогой работой и не должен быть сделан, если его можно избежать; разрешение автоповтору таймеров более эффективно. В некоторых случаях, однако, вручную скорректированные, повторяющиеся таймеры полезны. Например, если у Вас есть действие, которое будет выполняться многократно в будущем, но в неправильных временных интервалах, было бы очень дорого создать, добавьте к выполненным режимам цикла, и затем уничтожьте таймер для каждого события увольнения. Вместо этого можно создать повторяющийся таймер с начальным временем увольнения в далеком будущем (или начальным временем увольнения) и очень большой повторный интервал — на порядке десятилетий или более — и добавить его ко всем необходимым режимам цикла выполнения. Затем когда Вы знаете, когда таймер должен стрелять затем, Вы сбрасываете время увольнения с
CFRunLoopTimerSetNextFireDate
, возможно, от собственной функции обратного вызова таймера. Этот метод эффективно производит допускающий повторное использование, асинхронный таймер.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Когда CFRunLoopTimer возражает огням, обратный вызов вызвал.
Объявление
Swift
typealias CFRunLoopTimerCallBack = CFunctionPointer<((CFRunLoopTimer!, UnsafeMutablePointer<Void>) -> Void)>
Objective C
typedef void (*CFRunLoopTimerCallBack) ( CFRunLoopTimerRef timer, void *info );
Параметры
timer
Стреляющий таймер цикла выполнения.
info
info
элементCFRunLoopTimerContext
структура, использовавшаяся при создании таймера цикла выполнения.Обсуждение
Если
timer
повторения, цикл выполнения автоматически планирует в следующий раз увольнения после вызывания этой функции, если Вы вручную не обновите время увольнения в этом обратном вызове путем вызоваCFRunLoopTimerSetNextFireDate
. Еслиtimer
не повторяется, цикл выполнения лишает законной силыtimer
.Вы указываете этот обратный вызов при создании таймера с
CFRunLoopTimerCreate
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Структура, содержащая определенные с помощью программы данные и обратные вызовы, с которыми можно сконфигурировать поведение CFRunLoopTimer.
Объявление
Swift
struct CFRunLoopTimerContext { var version: CFIndex var info: UnsafeMutablePointer<Void> var retain: CFunctionPointer<((UnsafePointer<Void>) -> UnsafePointer<Void>)> var release: CFunctionPointer<((UnsafePointer<Void>) -> Void)> var copyDescription: CFunctionPointer<((UnsafePointer<Void>) -> Unmanaged<CFString>!)> }
Objective C
struct CFRunLoopTimerContext { CFIndex version; void *info; CFAllocatorRetainCallBack retain; CFAllocatorReleaseCallBack release; CFAllocatorCopyDescriptionCallBack copyDescription; }; typedef struct CFRunLoopTimerContext CFRunLoopTimerContext;
Поля
version
Номер версии структуры. Должен быть 0.
info
Произвольный указатель на определенные с помощью программы данные, которые могут быть связаны с таймером цикла выполнения во время создания. Этот указатель передается всем обратным вызовам, определенным в контексте.
retain
Сохранить обратный вызов для Вашего определенного с помощью программы
info
указатель. Может бытьNULL
.release
Обратный вызов выпуска для Вашего определенного с помощью программы
info
указатель. Может бытьNULL
.copyDescription
Обратный вызов описания копии для Вашего определенного с помощью программы
info
указатель. Может бытьNULL
.Доступность
Доступный в OS X v10.0 и позже.
-
Ссылка на объект таймера цикла выполнения.
Объявление
Swift
typealias CFRunLoopTimerRef = CFRunLoopTimer
Objective C
typedef struct __CFRunLoopTimer *CFRunLoopTimerRef;
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.