概览
用于打开容器的辅助类。
这是为提供超时支持的调用方 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: (TAGContainerOpenerNot the available notification-p) 中
静态公开成员函数 | |
| (id<TAGContainerFuture >) | + openContainerWithId:tagManager:openType:timeout:: |
等待最多 timeout 秒来等待容器加载(非默认容器,或刷新容器,具体取决于指定的 openType),并返回 TAGContainerFuture。 | |
| (void) | + openContainerWithId:tagManager:openType:timeout:notifier: |
等待最多 timeout 秒来等待容器加载(非默认或全新,具体取决于指定的 openType),并在容器可用时调用通知程序。 | |
| (NSTimeInterval) | + defaultTimeout |
| 返回请求容器的默认超时。 | |
成员函数文档
| + (id<TAGContainerFuture>) openContainerWithId: | (NSString *) | containerId | |
| tagManager: | (TAGManager *) | tagManager | |
| openType: | (TAGOpenType)TAGOpenType | openType | |
| 超时: | (NSTimeInterval *) | 超时 | |
等待最多 timeout 秒来等待容器加载(非默认容器,或刷新容器,具体取决于指定的 openType),并返回 TAGContainerFuture。
如果 open 类型为 kTAGOpenTypePreferNonDefault,那么一旦发生以下任一情况,系统会加载非默认容器(即从网络中保存或检索到的容器),并立即解除对 TAGContainerFuture 的阻塞:
- 已保存的容器已加载完毕
- 如果没有已保存的容器,则会加载网络容器或出现网络错误。
- 计时器到时结束。
如果发生网络错误或计时器到期,get (TAGContainerFuture-p) 可能会返回默认容器。
如果 open 类型为 kTAGOpenTypePreferFresh,那么一旦发生以下任一情况,系统会加载新的(保存或从网络中检索到的)容器,并立即解除对 TAGContainerFuture 的阻塞:
- 已保存的新鲜容器即可加载完毕
- 如果没有保存的容器或保存的容器已过时,则会加载网络容器或出现网络错误。
- 计时器到时结束。
如果发生网络错误或计时器到期,get (TAGContainerFuture-p) 可能会包含默认值或保存的过时容器。
如果您使用给定的 containerId 再次调用其中一个 openContainer 方法,系统将返回一个 TAGContainerFuture,其 get (TAGContainerFuture-p) 将返回与第一次调用相同的容器。
- 参数:
-
containerId 要加载的容器的 ID。 tagManager 用于获取容器的 TAGManager。 超时 从已保存的存储区中加载容器所需的最长秒数。如果为 nil,将使用 defaultTimeout。 openType 选择如何打开容器。
- 返回:
- 一个 TAGContainerFuture,最多等待
timeout,并在容器可用时返回容器。
| + (void) openContainerWithId: | (NSString *) | containerId | |
| tagManager: | (TAGManager*) | tagManager | |
| openType: | (TAGOpenType)TAGOpenType | openType | |
| 超时: | (NSTimeInterval *) | 超时 | |
| 通知程序: | (id< TAGContainerOpenerNotifier >) | 通知程序 | |
等待最多 timeout 秒来等待容器加载(非默认或全新,具体取决于指定的 openType),并在容器可用时调用通知程序。
如果 open 类型为 kTAGOpenTypePreferNonDefault,则系统会加载非默认容器(即从网络中保存或检索到的非默认容器),并将该容器传递到通知程序中。发生以下任一情况时,系统会立即调用通知程序:
- 已保存的容器已加载完毕
- 如果没有已保存的容器,则会加载网络容器或出现网络错误。
- 计时器到时结束。
如果发生网络错误或计时器到期,则传入通知程序的容器为默认容器。
如果 open 类型为 kTAGOpenTypePreferFresh,则系统会加载新的(从网络中保存或检索到的)容器并将其传递到通知程序。发生以下任一情况时,系统会立即调用通知程序:
- 已保存的新鲜容器即可加载完毕
- 如果没有保存的容器或保存的容器已过时,则会加载网络容器或出现网络错误。
- 计时器到时结束。
如果发生网络错误或计时器过期,则传递到通知程序的容器可能包含默认值或过时的已保存容器。
如果您使用给定的 containerId 再次调用其中一个 openContainer 方法,那么一旦该容器可用,系统就会将上一次调用返回的同一容器传入通知程序。
- 参数:
-
containerId 要加载的容器的 ID。 tagManager 用于获取容器的 TAGManager。 openType 选择如何打开容器。 超时 从已保存的存储区中加载容器所需的最长秒数。如果为 nil,将使用 defaultTimeout。 通知程序 一个可选的通知程序,将在容器可用时调用。系统将使用全新容器(如果有)调用该方法,并在超时之前加载;否则将使用非全新容器调用它。请注意,系统可能会从其他线程调用该通知程序。
| + (NSTimeInterval) defaultTimeout |
返回请求容器的默认超时。
- 返回:
- 默认超时(以秒为单位)。