概要
コンテナを開くためのヘルパークラス。
これは、タイムアウトをサポートする呼び出し元用の 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: |
コンテナが読み込まれるまで最大 timeout 秒待機し(指定された openType に応じてデフォルト以外または新しい)。TAGContainerFuture を返します。 | |
(void) | + openContainerWithId:tagManager:openType:timeout:notifier: |
コンテナが読み込まれるまで最大 timeout 秒待機します(指定した openType に応じて、デフォルト以外または新しい)。コンテナが利用可能になると、Notifier を呼び出します。 | |
(NSTimeInterval) | + defaultTimeout |
コンテナをリクエストする際のデフォルトのタイムアウトを返します。 |
メンバー関数のドキュメント
+ (id<TAGContainerFuture>) openContainerWithId: | (NSString *) | containerId | |
タグ マネージャー: | (TAGManager *) | tagManager | |
openType: | (TAGOpenType) | openType | |
timeout: | (NSTimeInterval *) | timeout | |
コンテナが読み込まれるまで最大 timeout
秒待機し(指定された openType
に応じてデフォルト以外または新しい)。TAGContainerFuture
を返します。
オープンタイプが kTAGOpenTypePreferNonDefault
の場合、デフォルト以外の(保存またはネットワークから取得)コンテナが読み込まれ、次のいずれかが発生するとすぐに TAGContainerFuture
のブロックが解除されます。
- 保存されたコンテナが読み込まれます。
- 保存されたコンテナがない場合、ネットワーク コンテナが読み込まれるか、ネットワーク エラーが発生する。
- タイマーが切れます。
ネットワーク エラーが発生した場合やタイマーが切れた場合、get (TAGContainerFuture-p) はデフォルトのコンテナを返すことがあります。
オープンタイプが kTAGOpenTypePreferFresh
の場合、新しい(保存またはネットワークから取得)コンテナが読み込まれ、次のいずれかが発生するとすぐに TAGContainerFuture のブロックが解除されます。
- 新しく保存されたコンテナが読み込まれます。
- 保存されたコンテナがない場合や、保存されたコンテナが最新ではない場合、ネットワーク コンテナが読み込まれるか、ネットワーク エラーが発生します。
- タイマーが切れます。
ネットワーク エラーが発生した場合やタイマーが切れた場合、get (TAGContainerFuture-p) には、デフォルト値または古い保存済みコンテナが含まれる場合があります。
指定した containerId
を使って、2 回目の openContainer メソッドを呼び出すと、TAGContainerFuture
が返され、get (TAGContainerFuture-p) によって最初の呼び出しと同じコンテナが返されます。
- パラメータ:
-
containerId 読み込むコンテナの ID。 tagManager コンテナを取得するための TAGManager。 timeout 保存済みストアからコンテナを読み込む際に待機する最大時間(秒)。nil の場合、defaultTimeout が使用されます。 openType コンテナを開く方法の選択。
- 戻り値:
- 最大
timeout
を待機し、利用可能になり次第コンテナを返す TAGContainerFuture。
+ (void) openContainerWithId: | (NSString *) | containerId | |
タグ マネージャー: | (TAGManager *) | tagManager | |
openType: | (TAGOpenType) | openType | |
timeout: | (NSTimeInterval *) | タイムアウト | |
Notifier: | (id< TAGContainerOpenerNotifier >) | Notifier | |
コンテナが読み込まれるまで最大 timeout
秒待機します(指定した openType
に応じて、デフォルト以外または新しい)。コンテナが利用可能になると、Notifier を呼び出します。
オープンタイプが kTAGOpenTypePreferNonDefault
の場合、デフォルト以外の(保存またはネットワークから取得)コンテナが読み込まれ、 Notifier に渡されます。次のいずれかが発生するとすぐに Notifier が呼び出されます。
- 保存されたコンテナが読み込まれます。
- 保存されたコンテナがない場合、ネットワーク コンテナが読み込まれるか、ネットワーク エラーが発生する。
- タイマーが切れます。
ネットワーク エラーが発生した場合やタイマーが切れた場合、通知機能に渡されるコンテナはデフォルトのコンテナになります。
オープンなタイプが kTAGOpenTypePreferFresh
の場合、新しい(保存またはネットワークから取得)コンテナが読み込まれ、 Notifier に渡されます。次のいずれかが発生するとすぐに Notifier が呼び出されます。
- 新しく保存されたコンテナが読み込まれます。
- 保存されたコンテナがない場合や、保存されたコンテナが最新ではない場合、ネットワーク コンテナが読み込まれるか、ネットワーク エラーが発生します。
- タイマーが切れます。
ネットワーク エラーが発生した場合やタイマーが切れた場合、通知機能に渡されるコンテナにデフォルトが含まれているか、保存されたコンテナが古い可能性があります。
特定の containerId
を使って、openContainer メソッドのいずれかを 2 回呼び出すと、利用可能になり次第、前の呼び出しで返された同じコンテナが Notifier に渡されます。
- パラメータ:
-
containerId 読み込むコンテナの ID。 tagManager コンテナの取得に使用される TAGManager。 openType コンテナを開く方法の選択。 timeout 保存済みストアからコンテナを読み込む際に待機する最大時間(秒)。nil の場合、defaultTimeout が使用されます。 Notifier コンテナが利用可能になったときに呼び出されるオプションの Notifier。このメソッドは新しいコンテナで呼び出されます(利用可能で、タイムアウトの前に読み込まれる場合)。それ以外の場合は、新鮮でないコンテナで呼び出されます。Notifier は別のスレッドから呼び出される場合があります。
+(NSTimeInterval)defaultTimeout |
コンテナをリクエストする際のデフォルトのタイムアウトを返します。
- 戻り値:
- デフォルトのタイムアウト(秒単位)。