Класс GCKMediaQueue

Справочник классов GCKMediaQueue

Обзор

Представление модели данных медиа-очереди произвольной длины.

Этот класс можно использовать в качестве основы для реализации UITableViewDataSource для управления пользовательским интерфейсом очереди мультимедиа.

GCKMediaQueue прослушивает события GCKSessionManager и автоматически присоединяется к GCKRemoteMediaClient при запуске сеанса Cast. Он прослушивает уведомления об изменении очереди от GCKRemoteMediaClient и соответствующим образом обновляет свою внутреннюю модель данных. Аналогично, он использует GCKRemoteMediaClient для получения информации об очереди по требованию.

Модель поддерживает список идентификаторов элементов очереди для всей очереди; он автоматически извлекает этот список всякий раз, когда подключается к сеансу Cast. Он также поддерживает кэш LRU (настраиваемого размера) GCKMediaQueueItems, привязанный к идентификатору элемента очереди.

Метод itemAtIndex: (GCKMediaQueue) используется для извлечения элемента очереди по заданному индексу. Если GCKMediaQueueItem в настоящее время отсутствует в кэше, выполняется асинхронный запрос на получение этого элемента от получателя, и делегат в конечном итоге уведомляется о получении запрошенных элементов.

Если за очень короткий промежуток времени выполняется несколько вызовов этого метода, идентификаторы запрошенных элементов группируются внутри, чтобы уменьшить количество сделанных сетевых запросов. Поскольку существует верхний предел количества элементов очереди, которые можно получить от получателя одновременно, GCKMediaQueue сохраняет скользящее окно из N идентификаторов последних элементов, которые необходимо получить. Поэтому, если за короткий промежуток времени запрошено очень большое количество элементов, фактически будут получены только последние N элементов. Такое поведение позволяет эффективно управлять очень длинной очередью в пользовательском интерфейсе приложения, которую пользователь может быстро и/или часто прокручивать.

GCKMediaQueue не предоставляет никаких методов для прямого изменения очереди, поскольку любое такое изменение включает в себя асинхронный сетевой запрос к получателю (через методы GCKRemoteMediaClient ), который потенциально может завершиться ошибкой. GCKMediaQueue должен обеспечивать согласованное представление очереди в том виде, в каком она существует на получателе, поэтому внесение локальных изменений в модель данных, которые еще не зафиксированы на получателе, может привести к некорректному поведению пользовательского интерфейса.

См. 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:
Возвращает идентификатор элемента по заданному индексу в очереди. Более...
(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
cacheSizeThe cache size. Must be nonzero.
- (instancetype) initWithRemoteMediaClient: ( GCKRemoteMediaClient *)  remoteMediaClient
cacheSize: (NSUInteger)  cacheSize
maxFetchCount: (NSUInteger)  maxFetchCount  

Инициализирует новый GCKMediaQueue с заданным размером кэша и заданным максимальным количеством выборок.

Parameters
cacheSizeThe cache size. Must be nonzero.
maxFetchCountThe maxiumum fetch count with minimum being 1.
- (void) addDelegate: (id< GCKMediaQueueDelegate >)  delegate

Добавляет делегата в список делегатов этого объекта.

Parameters
delegateThe delegate to add. The delegate will be retained until removeDelegate: is called.
- (void) removeDelegate: (id< GCKMediaQueueDelegate >)  delegate

Удаляет делегата из списка делегатов этого объекта.

Parameters
delegateThe delegate to remove.
- (nullable GCKMediaQueueItem *) itemAtIndex: (NSUInteger)  index

Возвращает элемент очереди мультимедиа по заданному индексу в очереди или организует получение элемента от получателя, если его в данный момент нет в кеше.

Parameters
indexThe index of the item to fetch.
Возврат
Элемент по данному индексу или nil , если элемент в данный момент не находится в кеше, но будет получен асинхронно.
- (nullable GCKMediaQueueItem *) itemAtIndex: (NSUInteger)  index
fetchIfNeeded: (BOOL)  fetch  

Возвращает элемент очереди мультимедиа по заданному индексу в очереди или, при необходимости, обеспечивает получение элемента от получателя, если его в данный момент нет в кеше.

Parameters
indexThe index of the item to fetch.
fetchWhether the item should be fetched from the receiver if it is not currently in the cache.
Возврат
Элемент по данному индексу или nil , если элемент в настоящее время отсутствует в кеше.
- ( GCKMediaQueueItemID ) itemIDAtIndex: (NSUInteger)  index

Возвращает идентификатор элемента по заданному индексу в очереди.

Возврат
Идентификатор элемента по данному индексу или kGCKMediaQueueInvalidItemID, если индекс недействителен.
- (NSInteger) indexOfItemWithID: ( GCKMediaQueueItemID itemID

Ищет индекс элемента очереди в очереди.

Parameters
itemIDThe queue item ID.
Возврат
Индекс (то есть кардинальная позиция) элемента в очереди или NSNotFound, если такого элемента в очереди нет.
- (void) reload

Перезагружает очередь.

Кэш будет очищен, а список идентификаторов элементов будет повторно получен от получателя.

- (void) clear

Очищает очередь, удаляя все элементы и очищая кеш.

Детали недвижимости

- (NSUInteger) itemCount
read nonatomic assign

Количество элементов, находящихся в настоящее время в очереди.

- (NSUInteger) cacheSize
read nonatomic assign

Размер кэша.

- (NSUInteger) cachedItemCount
read nonatomic assign

Количество элементов очереди, которые в данный момент находятся в кеше.