Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка платформы основы ссылка класса NSOperationQueue

Опции
Развертывание Target:

На этой странице
Язык:

NSOperationQueue

NSOperationQueue класс регулирует выполнение ряда NSOperation объекты. Будучи добавленным к очереди, работа остается в той очереди, пока это явно не отменяется или заканчивает выполнять свою задачу. Операции в очереди (но еще не выполняющийся) самостоятельно организованы согласно приоритетным уровням и зависимостям объекта взаимодействия и выполняются соответственно. Приложение может создать многократные очереди работы и представить операции любому из них.

Даже если те операции расположены в различных очередях работы, зависимости взаимодействия обеспечивают абсолютный порядок выполнения для операций. Объект операции не считают готовым выполниться, пока все его зависимые операции не закончили выполняться. Для операций, которые готовы выполниться, очередь работы всегда выполняет ту с самым высоким приоритетом относительно других готовых операций. Для получения дополнительной информации о том, как установить приоритетные уровни и зависимости, см. Ссылку класса NSOperation.

Вы не можете непосредственно удалить работу из очереди после того, как это было добавлено. Работа остается в ее очереди, пока она не сообщает, что закончена с ее задачей. Окончание его задачи не обязательно означает, что работа выполнила ту задачу к завершению. Работа может также быть отменена. Отмена объекта операции оставляет объект в очереди, но уведомляет объект, что это должно прервать свою задачу как можно быстрее. Для того, чтобы в настоящее время выполнить операции, это означает, что код работы объекта операции должен проверить состояние отмены, остановите то, что это делает, и отметьте себя, как закончено. Для операций, ставящихся в очередь, но еще выполнение, очередь должна все еще вызвать объект операции start метод так, чтобы это могло, обрабатывает событие отмены, и отметьте себя, как закончено.

Очереди работы обычно обеспечивают, потоки раньше выполняли их операции. Очереди работы используют libdispatch библиотека (также известный как Центральная Отгрузка) для инициирования выполнения их операций. В результате операции всегда выполняются на отдельном потоке, независимо от того, определяются ли они как асинхронные или синхронные операции.

Для получения дополнительной информации об использовании очередей работы см. Руководство по программированию Параллелизма.

KVO-совместимые свойства

NSOperationQueue класс является кодированием значения ключа (KVC) и совместимым наблюдением значения ключа (KVO). Можно наблюдать эти свойства, как желаемый управлять другими частями приложения. Для наблюдения свойств используйте следующие ключевые пути::

  • operations - только для чтения

  • operationCount - только для чтения

  • maxConcurrentOperationCount - читаемый и перезаписываемый

  • suspended - читаемый и перезаписываемый

  • name - читаемый и перезаписываемый

Несмотря на то, что можно присоединить наблюдателей к этим свойствам, Вы не должны использовать привязку Какао для привязки их с элементами пользовательского интерфейса приложения. Код, связанный с Вашим пользовательским интерфейсом обычно, должен выполняться только в основном потоке Вашего приложения. Однако уведомления KVO, связанные с очередью работы, могут произойти в любом потоке.

Для получения дополнительной информации о наблюдении значения ключа и как присоединить наблюдателей к объекту, посмотрите, что Значение ключа Наблюдает Руководство по программированию.

Многожильные соображения

Безопасно использовать сингл NSOperationQueue объект от многократных потоков, не создавая дополнительные блокировки для синхронизации доступа к тому объекту.

Дополнительные способы поведения очереди работы

Очередь работы выполняет свои объекты операции с очередями на основе их приоритета и готовности. Если все объекты операции с очередями имеют тот же приоритет и готовы выполниться, когда они помещаются в очередь — т.е. их isReady возвраты метода YEStrue— они выполняются в порядке, в котором они были представлены очереди. Однако Вы никогда не должны полагаться на семантику очереди для обеспечения определенного порядка выполнения объектов операции. Изменения в готовности работы могут изменить получающийся порядок выполнения. При необходимости в операциях для выполнения в определенном порядке, используйте зависимости уровня работы, как определено NSOperation класс.

Наследование


Соответствует


Оператор импорта


Swift

import Foundation

Objective C

@import Foundation;

Доступность


Доступный в OS X v10.5 и позже.
  • Возвращает очередь работы, запустившую текущую работу.

    Объявление

    Swift

    class func currentQueue() -> NSOperationQueue?

    Objective C

    + (NSOperationQueue *)currentQueue

    Возвращаемое значение

    Очередь работы, запустившая работу или nil если не могла бы быть определена очередь.

    Обсуждение

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

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает очередь работы, связанную с основным потоком.

    Объявление

    Swift

    class func mainQueue() -> NSOperationQueue

    Objective C

    + (NSOperationQueue *)mainQueue

    Возвращаемое значение

    Очередь работы по умолчанию связала с основным потоком.

    Обсуждение

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

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.6 и позже.

  • Добавляет указанный объект операции к получателю.

    Объявление

    Swift

    func addOperation(_ operation: NSOperation)

    Objective C

    - (void)addOperation:(NSOperation *)operation

    Параметры

    operation

    Объект операции, который будет добавлен к очереди. В управляемых приложениях памяти этот объект сохраняется очередью работы. В собравших «мусор» приложениях очередь строго ссылается на объект операции.

    Обсуждение

    После того, как добавленный, указанное operation остается в очереди, пока она не заканчивает выполняться.

    Объект операции может быть в самое большее одной очереди работы за один раз, и этот метод бросает NSInvalidArgumentException исключение, если работа уже находится в другой очереди. Точно так же этот метод бросает NSInvalidArgumentException исключение, если работа в настоящее время выполняет или уже закончила выполняться.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.5 и позже.

    См. также

    cancel (NSOperation)
    isExecuting (NSOperation)

  • Добавляет указанный массив операций очереди.

    Объявление

    Swift

    func addOperations(_ ops: [AnyObject], waitUntilFinished wait: Bool)

    Objective C

    - (void)addOperations:(NSArray *)ops waitUntilFinished:(BOOL)wait

    Параметры

    ops

    Массив NSOperation объекты, которые Вы хотите добавить к получателю.

    wait

    Если YEStrue, текущий поток блокируется, пока все указанные операции не заканчивают выполняться. Если NOfalse, операции добавляются к очереди и сразу управляют возвратами к вызывающей стороне.

    Обсуждение

    Объект операции может быть в самое большее одной очереди работы за один раз и не может быть добавлен, если это в настоящее время выполняется или законченное. Этот метод бросает NSInvalidArgumentException исключение, если какое-либо из тех состояний ошибки является истиной для какой-либо из операций в ops параметр.

    После того, как добавленный, указанное operation остается в очереди до isFinished возвраты метода YEStrue.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.6 и позже.

  • Обертывает указанный блок в объект операции и добавляет его к получателю.

    Объявление

    Swift

    func addOperationWithBlock(_ block: () -> Void)

    Objective C

    - (void)addOperationWithBlock:(void (^)(void))block

    Параметры

    block

    Блок для выполнения от объекта операции. Блок не должен брать параметры и не иметь никакого возвращаемого значения.

    Обсуждение

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

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.6 и позже.

    См. также

    cancel (NSOperation)
    isExecuting (NSOperation)

  • Массив операций в настоящее время в очереди. (только для чтения)

    Объявление

    Swift

    var operations: [AnyObject] { get }

    Objective C

    @property(readonly, copy) NSArray *operations

    Обсуждение

    Массив в этом свойстве содержит нуль или больше NSOperation объекты в порядке, в котором они были добавлены к очереди. Этот порядок не обязательно отражает порядок, в котором будут выполняться те операции.

    Можно использовать это свойство для доступа к операциям, поставленным в очередь в любой данный момент. Операции остаются с очередями, пока они не заканчивают свою задачу. Поэтому массив может содержать операции, выполняющиеся или ожидающие, чтобы быть выполненными. Список может также содержать операции, выполнявшиеся, когда массив был первоначально получен, но впоследствии закончился.

    Можно наблюдать изменения к значению этого свойства с помощью наблюдения значения ключа. Сконфигурируйте наблюдателя для контроля operations ключевой путь очереди работы.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.5 и позже.

  • operationCount operationCount Свойство

    Число операций в настоящее время в очереди. (только для чтения)

    Объявление

    Swift

    var operationCount: Int { get }

    Objective C

    @property(readonly) NSUInteger operationCount

    Обсуждение

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

    Можно наблюдать изменения к значению этого свойства с помощью наблюдения значения ключа. Сконфигурируйте наблюдателя для контроля operationCount ключевой путь очереди работы.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.6 и позже.

  • Отмены все и выполняющиеся операции с очередями.

    Объявление

    Swift

    func cancelAllOperations()

    Objective C

    - (void)cancelAllOperations

    Обсуждение

    Это вызовы метода cancel метод на всех операциях в настоящее время в очереди.

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

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.5 и позже.

    См. также

    cancel (NSOperation)

  • Блокирует текущий поток, пока все и выполняющиеся операции получателя с очередями не заканчивают выполняться.

    Объявление

    Swift

    func waitUntilAllOperationsAreFinished()

    Objective C

    - (void)waitUntilAllOperationsAreFinished

    Обсуждение

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

    Если нет никаких операций в очереди, этот метод сразу возвращается.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.5 и позже.

  • Уровень обслуживания по умолчанию для применения к операциям выполнил использование очереди.

    Объявление

    Swift

    var qualityOfService: NSQualityOfService

    Objective C

    @property NSQualityOfService qualityOfService

    Обсуждение

    Это свойство указывает, что уровень обслуживания применился к объектам операции, добавленным к очереди. Если объекту операции установили явный уровень обслуживания, то значение используется вместо этого. Значение по умолчанию этого свойства зависит от того, как Вы создали очередь. Для очередей Вы создаете себя, значение по умолчанию NSOperationQualityOfServiceBackground. Для очереди, возвращенной mainQueue метод, значение по умолчанию NSOperationQualityOfServiceUserInteractive и не может быть изменен.

    Уровни обслуживания влияют на приоритет, с которым объектам операции предоставляют доступ к системным ресурсам, таким как процессорное время, сетевые ресурсы, дисковые ресурсы, и т.д. Операциям с более высоким уровнем качества обслуживания отдают больший приоритет по системным ресурсам так, чтобы они могли выполнить свою задачу более быстро. Вы используете уровни обслуживания, чтобы гарантировать, что операциям, отвечающим на явные пользовательские запросы, дают приоритет над менее важной работой.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.10 и позже.

  • Максимальное количество операций с очередями, которые могут выполниться одновременно.

    Объявление

    Swift

    var maxConcurrentOperationCount: Int

    Objective C

    @property NSInteger maxConcurrentOperationCount

    Обсуждение

    Значение в этом свойстве влияет только на операции, что у текущей очереди есть выполнение одновременно. Другие очереди работы могут также выполнить свое максимальное количество операций параллельно.

    Сокращение количества параллельных операций не влияет ни на какие в настоящее время выполняющиеся операции. Указание значения NSOperationQueueDefaultMaxConcurrentOperationCount (который рекомендуется), заставляет систему определять максимальный номер операций на основе системных условий.

    Значение по умолчанию этого свойства NSOperationQueueDefaultMaxConcurrentOperationCount. Можно наблюдать изменения к значению этого свойства с помощью наблюдения значения ключа. Сконфигурируйте наблюдателя для контроля maxConcurrentOperationCount ключевой путь очереди работы.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.5 и позже.

  • Булево значение, указывающее, планирует ли очередь активно операции для выполнения.

    Объявление

    Swift

    var suspended: Bool

    Objective C

    @property(getter=isSuspended) BOOL suspended

    Обсуждение

    Когда значение этого свойства NOfalse, очередь активно запускает операции, которые находятся в очереди и готовы выполниться. Установка этого свойства к YEStrue препятствует тому, чтобы очередь запустила любые операции с очередями, но уже выполнить операции продолжают выполняться. Можно продолжать добавлять операции к очереди, временно отстраненной, но те операции не планируются для выполнения, пока Вы не измените это свойство на NOfalse.

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

    Можно наблюдать изменения к значению этого свойства с помощью наблюдения значения ключа. Сконфигурируйте наблюдателя для контроля suspended ключевой путь очереди работы.

    Значение по умолчанию этого свойства NOfalse.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.10 и позже.

  • underlyingQueue underlyingQueue Свойство

    Очередь отгрузки раньше выполняла операции.

    Объявление

    Swift

    unowned(unsafe) var underlyingQueue: dispatch_queue_t

    Objective C

    @property(assign) dispatch_queue_t underlyingQueue

    Обсуждение

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

    Можно изменить значение этого свойства, если Вы уже имеете очередь отгрузки и хотите иметь очередь работы, подающую задачи той же очереди. Если operationCount свойство не 0, устанавливание значения этого свойства повышает исключение. Кроме того, новая очередь отгрузки не должна быть очередью отгрузки для основного потока. Новая очередь отгрузки использует уровень качества обслуживания, уже установленный для него; это не использует значение в qualityOfService свойство.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.10 и позже.

  • имя имя Свойство

    Имя очереди работы.

    Объявление

    Swift

    var name: String?

    Objective C

    @property(copy) NSString *name

    Обсуждение

    Имена обеспечивают способ для Вас идентифицировать Ваши очереди работы во время выполнения. Инструменты могут также использовать это имя для обеспечения дополнительного контекста во время отладки или анализа кода.

    Значение по умолчанию этого свойства “NSOperationQueue <ID>”, где <ID> адрес памяти очереди работы. Можно наблюдать изменения к значению этого свойства с помощью наблюдения значения ключа. Сконфигурируйте наблюдателя для контроля name ключевой путь очереди работы.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в OS X v10.6 и позже.

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

    Объявление

    Swift

    var NSOperationQueueDefaultMaxConcurrentOperationCount: Int { get }

    Objective C

    enum { NSOperationQueueDefaultMaxConcurrentOperationCount = -1 };

    Константы

    • NSOperationQueueDefaultMaxConcurrentOperationCount

      NSOperationQueueDefaultMaxConcurrentOperationCount

      Максимальное количество по умолчанию операций определяется динамично NSOperationQueue основанный на объектах на условиях существующей системы.

      Доступный в OS X v10.5 и позже.