Обзор
Вспомогательный класс для открытия контейнеров.
Это оболочка метода openContainerById:callback: (TAGManager) для вызывающих объектов, обеспечивающая поддержку таймаутов.
Ниже приведен пример, показывающий ожидание загрузки контейнера до 0,1 секунды перед возвратом к контейнеру по умолчанию:
NSTimeInterval timeout = 0.1;
TagManager *tagManager = [TagManager instance];
TAGContainerFuture *future =
[TAGContainerOpener openContainerWithId:@"GTM-XXXX"
tagManager:tagManager
openType:kTAGOpenTypePreferNonDefault
timeout:&timeout];
TAGContainer *container = [future get];
Если вызывающая сторона хочет получать асинхронное уведомление, когда контейнер доступен, но хочет вручную указать таймаут равным 0,5 секунды, тогда вызывающая сторона должна создать подкласс TAGContainerOpenerNotifier , выполнить вызов openContainerWithId:tagManager:openType:timeout:notifier: (TAGContainerOpener) с таймаутом. установите значение 0,5 и добавьте реализацию вContainerAvailable: (TAGContainerOpenerNotifier-p) для обработки уведомления о доступности контейнера.
Статические открытые функции-члены | |
| (id <TAGContainerFuture> ) | + openContainerWithId:tagManager:openType:тайм-аут: |
Ожидает загрузки контейнера в течение timeout (не по умолчанию или свежего, в зависимости от указанного openType ) и возвращает TAGContainerFuture . | |
| (пустота) | + openContainerWithId:tagManager:openType:тайм-аут:уведомитель: |
Ожидает загрузки контейнера в течение timeout (не по умолчанию или свежего, в зависимости от указанного openType ) и вызывает уведомитель, когда контейнер доступен. | |
| (НСтимеинтервал) | + таймаут по умолчанию |
| Возвращает тайм-аут по умолчанию для запроса контейнера. | |
Документация по функциям-членам
| + (id< TAGContainerFuture >) openContainerWithId: | (НСтрока *) | идентификатор контейнера | |
| менеджер тегов: | ( Менеджер тегов *) | Менеджер тегов | |
| открытыйТип: | ( ТАГОпенТип ) | openType | |
| тайм-аут: | (НСтимеинтервал *) | тайм-аут | |
Ожидает загрузки контейнера в течение timeout (не по умолчанию или свежего, в зависимости от указанного openType ) и возвращает TAGContainerFuture .
Если открытый тип — kTAGOpenTypePreferNonDefault , загружается контейнер не по умолчанию (сохраненный или полученный из сети), и TAGContainerFuture разблокируется, как только происходит одно из следующих событий:
- сохраненный контейнер загружается.
- если сохраненного контейнера нет, значит загружается сетевой контейнер или возникает сетевая ошибка.
- таймер истекает.
Если происходит сетевая ошибка или истекает время таймера, get (TAGContainerFuture-p) может вернуть контейнер по умолчанию.
Если открытый тип — kTAGOpenTypePreferFresh , загружается новый (сохраненный или полученный из сети) контейнер, и TAGContainerFuture разблокируется, как только происходит одно из следующих событий:
- загружается сохраненный свежий контейнер.
- если сохраненного контейнера нет или сохраненный контейнер устарел, загружается сетевой контейнер или возникает сетевая ошибка.
- таймер истекает.
Если происходит сетевая ошибка или истекает время таймера, get (TAGContainerFuture-p) может содержать значения по умолчанию или устаревший сохраненный контейнер.
Если вы вызовете один из методов openContainer во второй раз с заданным containerId , будет возвращен TAGContainerFuture , метод get (TAGContainerFuture-p) которого вернет тот же контейнер, что и при первом вызове.
- Параметры:
идентификатор контейнера Идентификатор контейнера для загрузки. Менеджер тегов TAGManager для получения контейнера. тайм-аут Максимальное количество секунд ожидания загрузки контейнера из сохраненного хранилища. Если ноль, будет использоваться defaultTimeout . openType Выбор способа открытия контейнера.
- Возврат:
- TAGContainerFuture , который будет ждать истечения
timeoutи возвращать контейнер, когда он станет доступен.
| + (недействительный) openContainerWithId: | (НСтрока *) | идентификатор контейнера | |
| менеджер тегов: | ( Менеджер тегов *) | Менеджер тегов | |
| открытыйТип: | ( ТАГОпенТип ) | openType | |
| тайм-аут: | (НСтимеинтервал *) | тайм-аут | |
| уведомитель: | (id< TAGContainerOpenerNotifier >) | уведомитель | |
Ожидает загрузки контейнера в течение timeout (не по умолчанию или свежего, в зависимости от указанного openType ) и вызывает уведомитель, когда контейнер доступен.
Если открытый тип — kTAGOpenTypePreferNonDefault , контейнер не по умолчанию (сохраненный или полученный из сети) загружается и передается в уведомитель. Уведомитель вызывается, как только происходит одно из следующих событий:
- сохраненный контейнер загружается.
- если сохраненного контейнера нет, значит загружается сетевой контейнер или возникает сетевая ошибка.
- таймер истекает.
Если происходит сетевая ошибка или истекает время таймера, контейнер, передаваемый в уведомитель, становится контейнером по умолчанию.
Если открытый тип — kTAGOpenTypePreferFresh , новый контейнер (сохраненный или полученный из сети) загружается и передается в уведомитель. Уведомитель вызывается, как только происходит одно из следующих событий:
- загружается сохраненный свежий контейнер.
- если сохраненного контейнера нет или сохраненный контейнер устарел, загружается сетевой контейнер или возникает сетевая ошибка.
- таймер истекает.
Если происходит сетевая ошибка или истекает время таймера, контейнер, переданный в уведомитель, может содержать значения по умолчанию или устаревший сохраненный контейнер.
Если вы вызываете один из методов openContainer во второй раз с заданным containerId , тот же контейнер, возвращенный из предыдущего вызова, будет передан в уведомитель, как только он станет доступен.
- Параметры:
идентификатор контейнера Идентификатор контейнера для загрузки. Менеджер тегов TAGManager, используемый для получения контейнера. openType Выбор способа открытия контейнера. тайм-аут Максимальное количество секунд ожидания загрузки контейнера из сохраненного хранилища. Если ноль, будет использоваться defaultTimeout . уведомитель Необязательный уведомитель, который будет вызван, когда контейнер станет доступен. Он будет вызван с новым контейнером, если он доступен и загружен до истечения времени ожидания; в противном случае он будет вызван с несвежим контейнером. Обратите внимание, что уведомитель может быть вызван из другого потока.
| + (NSTimeInterval) defaultTimeout |
Возвращает тайм-аут по умолчанию для запроса контейнера.
- Возврат:
- Тайм-аут по умолчанию в секундах.