概要
任意の長さのメディアキューのデータモデル表現です。
このクラスは、メディアキュー UI を駆動するための UITableViewDataSource の実装の基礎として使用できます。
GCKMediaQueue は GCKSessionManager イベントをリッスンし、キャスト セッションの開始時に自身を自動的に GCKRemoteMediaClient にアタッチします。GCKRemoteMediaClient からのキュー変更通知をリッスンし、それに応じて内部データモデルを更新します。同様に、GCKRemoteMediaClient を使用してキュー情報をオンデマンドで取得します。
このモデルは、キュー全体のキューアイテム ID のリストを保持します。キャスト セッションにアタッチされるたびに、このリストが自動的に取得されます。また、キューアイテム ID をキーとする GCKMediaQueueItems の LRU キャッシュ(サイズを構成可能)も保持されます。
メソッド itemAtIndex: (GCKMediaQueue) は、指定されたインデックスでキューアイテムを取得するために使用します。GCKMediaQueueItem が現在キャッシュに存在しない場合は、レシーバからそのアイテムを取得するための非同期リクエストが行われ、最終的にはリクエストされたアイテムを受信するとデリゲートに通知されます。
このメソッドが短時間に複数回呼び出された場合、リクエストされたアイテム ID が内部でバッチ処理されるため、ネットワーク リクエストの数を減らすことができます。レシーバーから一度に取得できるキューアイテムの数には上限があるため、GCKMediaQueue は、取得される直近の N 個のアイテム ID のローリング ウィンドウを保持します。そのため、短期間に非常に多くのアイテムがリクエストされた場合は、最後の N 個のアイテムのみが実際には取得されます。この動作により、ユーザーは素早くまたは頻繁にスクロールするアプリの UI で非常に長いキューを効率的に管理できます。
GCKMediaQueue は、キューを直接変更するメソッドを提供していません。このような変更には、(GCKRemoteMediaClient のメソッドを介した)レシーバへの非同期ネットワーク リクエストが含まれ、エラーで失敗する可能性があります。GCKMediaQueue では、レシーバーに存在するキューの表現に一貫性を持たせる必要があるため、ローカルでまだレシーバーに commit されていないデータモデルに変更を加えると、UI の動作が正しく表示されない可能性があります。
委譲プロトコルについては、GCKMediaQueueDelegate をご覧ください。
- 開始:
- 4.3.4
NSObject を継承します。
インスタンス メソッドの概要 | |
(instancetype) | - init |
(instancetype) | - initWithRemoteMediaClient: |
デフォルトのキャッシュ サイズとデフォルトの最大フェッチ数で新しい GCKMediaQueue を初期化します。その他... | |
(instancetype) | - initWithRemoteMediaClient:cacheSize: |
指定されたキャッシュ サイズとデフォルトの最大フェッチ数で新しい GCKMediaQueue を初期化します。その他... | |
(instancetype) | - initWithRemoteMediaClient:cacheSize:maxFetchCount: |
指定されたキャッシュ サイズと指定された最大フェッチ数で新しい GCKMediaQueue を初期化します。その他... | |
(void) | - addDelegate: |
このオブジェクトの委任のリストに委任を追加します。その他... | |
(void) | - removeDelegate: |
このオブジェクトの委任リストから委任を削除します。その他... | |
(nullable GCKMediaQueueItem *) | - itemAtIndex: |
キュー内の指定したインデックスにあるメディアキュー アイテムを返します。アイテムが現在キャッシュにない場合はレシーバから取得するよう調整します。その他... | |
(nullable GCKMediaQueueItem *) | - itemAtIndex:fetchIfNeeded: |
キュー内の指定したインデックスにあるメディアキュー アイテムを返します。アイテムが現在キャッシュに存在しない場合は、必要に応じてアイテムがレシーバから取得されるように調整します。その他... | |
(GCKMediaQueueItemID) | - itemIDAtIndex: |
キュー内の指定されたインデックスにあるアイテムのアイテム ID を返します。その他... | |
(NSInteger) | - indexOfItemWithID: |
キュー内のキューアイテムのインデックスを検索します。その他... | |
(void) | - reload |
キューを再読み込みします。その他... | |
(void) | - clear |
キューを消去し、すべての要素を削除してキャッシュをフラッシュします。その他... | |
プロパティの概要 | |
NSUInteger | itemCount |
現在キューにあるアイテムの数。その他... | |
NSUInteger | cacheSize |
キャッシュ サイズ。その他... | |
NSUInteger | cachedItemCount |
現在キャッシュ内にあるキュー アイテムの数。その他... | |
メソッドの詳細
- (instancetype) initWithRemoteMediaClient: | (GCKRemoteMediaClient *) | remoteMediaClient |
デフォルトのキャッシュ サイズとデフォルトの最大フェッチ数で新しい GCKMediaQueue を初期化します。
- (instancetype) initWithRemoteMediaClient: | (GCKRemoteMediaClient *) | remoteMediaClient | |
cacheSize: | (NSUInteger) | cacheSize | |
指定されたキャッシュ サイズとデフォルトの最大フェッチ数で新しい GCKMediaQueue を初期化します。
- Parameters
-
cacheSize The cache size. Must be nonzero.
- (instancetype) initWithRemoteMediaClient: | (GCKRemoteMediaClient *) | remoteMediaClient | |
cacheSize: | (NSUInteger) | cacheSize | |
maxFetchCount: | (NSUInteger) | maxFetchCount | |
指定されたキャッシュ サイズと指定された最大フェッチ数で新しい GCKMediaQueue を初期化します。
- Parameters
-
cacheSize The cache size. Must be nonzero. maxFetchCount The maxiumum fetch count with minimum being 1.
- (void) addDelegate: | (id< GCKMediaQueueDelegate >) | delegate |
このオブジェクトの委任のリストに委任を追加します。
- Parameters
-
delegate The delegate to add. The delegate will be retained until removeDelegate: is called.
- (void) removeDelegate: | (id< GCKMediaQueueDelegate >) | delegate |
このオブジェクトの委任リストから委任を削除します。
- Parameters
-
delegate The delegate to remove.
- (nullable GCKMediaQueueItem *) itemAtIndex: | (NSUInteger) | index |
キュー内の指定したインデックスにあるメディアキュー アイテムを返します。アイテムが現在キャッシュにない場合はレシーバから取得するよう調整します。
- Parameters
-
index The index of the item to fetch.
- 戻り値
- 指定されたインデックスのアイテム。アイテムが現在キャッシュ内にないが非同期で取得される場合は
nil
。
- (nullable GCKMediaQueueItem *) itemAtIndex: | (NSUInteger) | index | |
fetchIfNeeded: | (BOOL) | fetch | |
キュー内の指定したインデックスにあるメディアキュー アイテムを返します。アイテムが現在キャッシュに存在しない場合は、必要に応じてアイテムがレシーバから取得されるように調整します。
- Parameters
-
index The index of the item to fetch. fetch Whether the item should be fetched from the receiver if it is not currently in the cache.
- 戻り値
- 指定されたインデックスのアイテム。アイテムが現在キャッシュ内にない場合は
nil
。
- (GCKMediaQueueItemID) itemIDAtIndex: | (NSUInteger) | index |
キュー内の指定されたインデックスにあるアイテムのアイテム ID を返します。
- 戻り値
- 指定されたインデックスのアイテム ID。インデックスが無効な場合は kGCKMediaQueueInvalidItemID。
- (NSInteger) indexOfItemWithID: | (GCKMediaQueueItemID) | itemID |
キュー内のキューアイテムのインデックスを検索します。
- Parameters
-
itemID The queue item ID.
- 戻り値
- キュー内のアイテムのインデックス(基となる位置)。該当するアイテムがキューにない場合は NSNotFound です。
- (void) reload |
キューを再読み込みします。
キャッシュがフラッシュされ、アイテム ID リストがレシーバーから再取得されます。
- (void) clear |
キューを消去し、すべての要素を削除してキャッシュをフラッシュします。
物件の詳細
|
readnonatomicassign |
現在キューにあるアイテムの数。
|
readnonatomicassign |
キャッシュ サイズ。
|
readnonatomicassign |
現在キャッシュ内にあるキュー アイテムの数。