NSProcessInfo
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в iOS 2.0 и позже.
NSProcessInfo
класс обеспечивает методы для доступа к информации о текущем процессе. Каждый процесс имеет сингл, совместно использованный NSProcessInfo
объект, известный как агент информации о процессе.
Агент информации о процессе может возвратить такую информацию как параметры, переменные окружения, имя хоста, или обработать имя. processInfo
метод класса возвращает совместно используемый агент для текущего процесса — т.е. процесс, объект которого отправил сообщение. Например, следующая строка возвращается NSProcessInfo
объект, тогда обеспечивающий имя текущего процесса:
NSString *processName = [[NSProcessInfo processInfo] processName];
NSProcessInfo
класс также включает operatingSystem
метод, возвращающий перечислимую постоянную идентификацию операционной системы, в которой выполняется процесс.
NSProcessInfo
объекты пытаются интерпретировать переменные окружения и параметры командной строки в кодировании струны до пользователя по умолчанию, если они не могут быть преобразованы в Unicode как строки UTF-8. Если никакое преобразование не работает, эти значения проигнорированы NSProcessInfo
объект.
Управление действиями
Система имеет эвристику для улучшения времени работы от батареи, производительности и скорости отклика приложений в пользу пользователя. Можно использовать следующие методы для управления действиями, дающими подсказки системе, что приложение имеет особые требования:
В ответ на создание действия система отключит некоторых или всю эвристику, таким образом, Ваше приложение сможет закончиться быстро при тихом обеспечении быстро реагирующего поведения, если пользователю нужен он.
Когда Ваше приложение выполняет продолжительную работу, Вы используете действия. Если действие может занять различное количество времени (например, вычисляя следующее перемещение в игре в шахматы), это должно использовать этот API. Когда объем данных или возможности компьютера пользователя будут варьироваться, это гарантирует корректное поведение. Необходимо поместить действие в одну из двух главных категорий:
Пользователь инициировал: Это конечные действия длины, которые явно запустил пользователь. Примеры включают экспорт, или загрузка пользователя указала файл.
Фон: Это конечные действия длины, которые являются частью нормального функционирования Вашего приложения, но явно не запускаются пользователем. Примеры включают автоматическое сохранение, индексацию и автоматическую загрузку файлов.
Кроме того, если Ваше приложение требует высокого приоритета I/O, можно включать NSActivityLatencyCritical
флаг (использующий поразрядное OR
). Необходимо только использовать этот флаг для действий как аудиозапись или видеозапись, действительно требующие высокого приоритета.
Если Ваше действие имеет место синхронно в обратном вызове события на основном потоке, Вы не должны использовать этот API.
Знайте, что сбой закончить эти действия в течение длительного периода времени может иметь значительное негативное влияние на производительность компьютера Вашего пользователя, так убедиться использовать только минимальную сумму требуемого времени. Пользовательские настройки могут переопределить запрос Вашего приложения.
Можно также использовать этот API для управления автоматическим завершением или внезапным завершением (см. Внезапное Завершение). Например:
id activity = [[NSProcessInfo processInfo] beginActivityWithOptions:NSActivityAutomaticTerminationDisabled reason:@"Good Reason"];
// Perform some work.
[[NSProcessInfo processInfo] endActivity:activity];
эквивалентно:
[[NSProcessInfo processInfo] disableAutomaticTermination:@"Good Reason"];
// Perform some work.
[[NSProcessInfo processInfo] enableAutomaticTermination:@"Good Reason"];
Поскольку этот API возвращает объект, может быть проще соединиться, начинается и заканчивается чем тогда, когда с помощью автоматического завершения API — если объект освобожден перед endActivity:
вызовите, действие будет автоматически закончено.
Этот API также обеспечивает механизм для отключения в масштабе всей системы неактивного сна и дисплея неактивный сон. Они могут оказать большое влияние на пользовательский опыт, так, несомненно, не смогут забыть заканчивать действия, отключающие сон (включая NSActivityUserInitiated
).
Внезапное завершение
OS X v10.6 и позже включает механизм, позволяющий системе выходить из системы или закрываться более быстро, когда это возможно, уничтожая приложения вместо того, чтобы запросить, чтобы они вышли из себя.
Ваше приложение может включить эту возможность на глобальной основе и затем вручную переопределить его доступность во время действий, которые могли вызвать повреждение данных или плохой пользовательский опыт путем разрешения внезапного завершения. Поочередно, Ваше приложение может просто вручную включить и отключить эту функциональность.
Методы enableSuddenTermination
и disableSuddenTermination
декремент или инкремент, соответственно, счетчик, значение которого 1
когда сначала создается процесс. Когда значение счетчика 0, приложение считается безопасно killable и может быть уничтожено системой без любого уведомления или события, отправляемого в процесс сначала.
Ваше приложение может поддерживать внезапное завершение на запуск путем добавления ключа к Info.plist приложения. Если NSSupportsSuddenTermination
ключ существует в Info.plist и имеет значение YES
true
, это - эквивалент вызова enableSuddenTermination
во время Вашего запуска приложения. Это представляет порядка подачи заявки, killable сразу же. Можно все еще переопределить это поведение путем вызова disableSuddenTermination
.
Как правило, Вы отключаете внезапное завершение каждый раз, когда Ваше приложение задерживает работу, которая должна быть выполнена, прежде чем приложение завершается. Если, например, Ваше приложение задерживает данные записи к диску, и внезапное завершение включено, необходимо заключить в скобки секретные операции с вызовом к disableSuddenTermination
, выполните необходимые операции, и затем отправьте балансирование enableSuddenTermination
сообщение.
В агентах или исполнимых программах демона, не зависящих от AppKit, который можно вручную вызвать enableSuddenTermination
сразу же. Можно тогда использовать разрешение и отключить методы каждый раз, когда процесс имеет работу, это должно сделать, прежде чем это завершится.
Некоторая функциональность AppKit автоматически отключает внезапное завершение на временной основе для обеспечения целостности данных.
NSUserDefaults
временно отключает внезапное завершение для предотвращения уничтожения процесса между временем, в которое значение по умолчанию было установлено и время, в которое предпочтительный файл включая то значение по умолчанию был записан в диск.NSDocument
временно отключает внезапное завершение для предотвращения уничтожения процесса между временем, в которое пользователь внес изменение в документ и время, в которое изменение пользователя было записано в диск.
Тепловое состояние и производительность приложения
Используйте текущее тепловое состояние, чтобы определить, должно ли Ваше приложение сократить системное использование. На OS X v10.10.3 и позже можно зарегистрироваться для NSProcessInfoThermalStateDidChangeNotification
быть уведомленным когда тепловые изменения состояния. Использовать thermalState
запрашивать текущее состояние. Ваше приложение должно сократить системное использование в более высоких тепловых состояниях. Для рекомендуемых действий посмотрите NSProcessInfoThermalState.
-
Возвращает агент информации о процессе для процесса.
Объявление
Swift
class func processInfo() -> NSProcessInfo
Objective C
+ (NSProcessInfo *)processInfo
Возвращаемое значение
Совместно используемый агент информации о процессе для процесса.
Обсуждение
NSProcessInfo
объект создается в первый раз, когда этот метод вызывается, и тот же самый объект возвращается на каждом последующем вызове.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
-
arguments
СвойствоМассив строк с параметрами командной строки для процесса.
Объявление
Swift
var arguments: [AnyObject] { get }
Objective C
@property(readonly, copy) NSArray *arguments
Обсуждение
Этот массив содержит всю информацию, переданную в
argv
массив, включая исполнимое имя в первом элементе.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
-
environment
СвойствоИмена переменной (ключи) и их значения в среде, от которой был запущен процесс.
Объявление
Swift
var environment: [NSObject : AnyObject] { get }
Objective C
@property(readonly, copy) NSDictionary *environment
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
-
globallyUniqueString
СвойствоГлобальный уникальный идентификатор для процесса. (только для чтения)
Объявление
Swift
var globallyUniqueString: String { get }
Objective C
@property(readonly, copy) NSString *globallyUniqueString
Обсуждение
Глобальный ID для процесса включает имя хоста, процесс ID и метка времени, гарантирующая, что ID уникален для сети. Это свойство генерирует новую строку каждый раз, когда ее метод get вызывается, и оно использует в противоречии с гарантией, что строки, создаваемые из того же процесса, уникальны.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
processIdentifier
СвойствоИдентификатор процесса (часто называемый процессом ID).
Объявление
Swift
var processIdentifier: Int32 { get }
Objective C
@property(readonly) int processIdentifier
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
processName
СвойствоИмя процесса.
Обсуждение
Имя процесса используется для регистрации значений по умолчанию приложения и используется в сообщениях об ошибках. Это не однозначно определяет процесс.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
hostName
Свойство -
operatingSystem () - operatingSystem
(iOS 8.0)Возвращает константу для указания операционной системы, в которой выполняется процесс.
Оператор осуждения
Использовать
operatingSystemVersion
илиisOperatingSystemAtLeastVersion:
вместо этогоВозвращаемое значение
Идентификатор операционной системы. Посмотрите Константы для списка возможных значений. В OS X это
NSMACHOperatingSystem
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
Осуждаемый в iOS 8.0.
-
operatingSystemName () - operatingSystemName
(iOS 8.0)Возвращает строку, содержащую имя операционной системы, в которой выполняется процесс.
Оператор осуждения
Использовать
operatingSystemVersionString
вместо этого.Возвращаемое значение
Имя операционной системы. В OS X это
@"NSMACHOperatingSystem"
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
Осуждаемый в iOS 8.0.
-
operatingSystemVersionString
СвойствоСтрока, содержащая версию операционной системы, в которой выполняется процесс. (только для чтения)
Объявление
Swift
var operatingSystemVersionString: String { get }
Objective C
@property(readonly, copy) NSString *operatingSystemVersionString
Обсуждение
Строка версии операционной системы является человекочитаемой, локализуется и является подходящей для отображения пользователю. Эта строка не является подходящей для парсинга.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
-
operatingSystemVersion
СвойствоВерсия операционной системы, в которой выполняется процесс. (только для чтения)
Объявление
Swift
var operatingSystemVersion: NSOperatingSystemVersion { get }
Objective C
@property(readonly) NSOperatingSystemVersion operatingSystemVersion
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 8.0 и позже.
-
Возвращает булево значение, указывающее, является ли версия операционной системы, в которой выполняется процесс, тем же или позже, чем данная версия.
Объявление
Swift
func isOperatingSystemAtLeastVersion(_
version
: NSOperatingSystemVersion) -> BoolObjective C
- (BOOL)isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion)
version
Параметры
version
Версия операционной системы для тестирования против.
Возвращаемое значение
YES
true
; если операционная система тем же или позже, чем данная версия, в которой процесс выполняется является, иначеNO
false
.Обсуждение
Этот метод счета на главные, незначительные, и версии обновления операционной системы.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 8.0 и позже.
-
processorCount
СвойствоЧисло обработки ядер, доступных на компьютере. (только для чтения)
Объявление
Swift
var processorCount: Int { get }
Objective C
@property(readonly) NSUInteger processorCount
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
activeProcessorCount
СвойствоЧисло активных ядер обработки, доступных на компьютере. (только для чтения)
Объявление
Swift
var activeProcessorCount: Int { get }
Objective C
@property(readonly) NSUInteger activeProcessorCount
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
physicalMemory
СвойствоСумма физической памяти на компьютере в байтах. (только для чтения)
Объявление
Swift
var physicalMemory: UInt64 { get }
Objective C
@property(readonly) unsigned long long physicalMemory
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 2.0 и позже.
-
systemUptime
СвойствоВременной интервал, так как был перезапущен компьютер. (только для чтения)
Объявление
Swift
var systemUptime: NSTimeInterval { get }
Objective C
@property(readonly) NSTimeInterval systemUptime
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 4.0 и позже.
-
Начните действие с помощью данных опций и причины.
Объявление
Swift
func beginActivityWithOptions(_
options
: NSActivityOptions, reasonreason
: String) -> NSObjectProtocolObjective C
- (id<NSObject>)beginActivityWithOptions:(NSActivityOptions)
options
reason:(NSString *)reason
Параметры
options
Опции для действия. Посмотрите Опции Действия для возможных значений.
reason
Строка, используемая в отладке для указания причины действие, началась.
Возвращаемое значение
Объектный маркер, представляющий действие.
Обсуждение
Укажите завершение действия путем вызова
endActivity:
передача возвращенного объекта как параметр.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 7.0 и позже.
-
Заканчивает данное действие.
Объявление
Swift
func endActivity(_
activity
: NSObjectProtocol)Objective C
- (void)endActivity:(id<NSObject>)
activity
Параметры
activity
Объект действия, возвращенный
beginActivityWithOptions:reason:
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 7.0 и позже.
-
Синхронно выполните действие, определенное данным блоком с помощью данных опций.
Объявление
Swift
func performActivityWithOptions(_
options
: NSActivityOptions, reasonreason
: String, usingBlockblock
: () -> Void)Objective C
- (void)performActivityWithOptions:(NSActivityOptions)
options
reason:(NSString *)reason
usingBlock:(void (^)(void))block
Параметры
options
Опции для действия. Посмотрите Опции Действия для возможных значений.
reason
Строка, используемая в отладке для указания причины действие, началась.
block
Блок, содержащий работу, которая будет выполняться действием.
Обсуждение
Действие будет автоматически закончено после
block
возвраты.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 7.0 и позже.
См. также
-
Если процесс собирается быть приостановленным, выполняет указанный блок асинхронно и уведомляет Вас.
Объявление
Swift
func performExpiringActivityWithReason(_
reason
: String!, usingBlockblock
: ((Bool) -> Void)!)Objective C
- (void)performExpiringActivityWithReason:(NSString *)
reason
usingBlock:(void (^)(BOOL expired))block
Параметры
reason
Строка, используемая в отладке для указания причины действие, началась. Этот параметр не должен быть
nil
или пустая строка.block
Блок, содержащий работу, которая будет выполняться действием. Блок не имеет никакого возвращаемого значения и берет следующий параметр:
expired
Булевская переменная, указывающая, собирается ли процесс быть приостановленным. Если значение
YES
true
, процесс собирается быть приостановленным так, необходимо предпринять любые шаги, необходимы для остановки в работе прогресса. Если этоNO
false
, запустите запланированные задачи.Обсуждение
Используйте этот метод для выполнения задач, когда процесс выполнится в фоновом режиме. Этот метод очереди
block
для асинхронного выполнения на параллельной очереди. Когда Ваш процесс в фоновом режиме, метод пытается взять утверждение задачи, чтобы гарантировать, что Ваш блок имеет время для выполнения. Если это неспособно взять утверждение задачи, или если время, выделенное для утверждения задачи, истекает, система выполняет Ваш блок с набором параметра кYES
true
. Если это в состоянии взять утверждение задачи, это выполняет блок и передачиNO
false
для параметра с истекшим сроком.Если Ваш блок все еще выполняется, и система должна приостановить процесс, система выполняет Ваш блок во второй раз с
expired
набор параметра кYES
true
. Ваш блок должен быть подготовлен обработать этот случай. Когда параметр с истекшим срокомYES
true
, остановите любые происходящие задачи как можно быстрее.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 8.2 и позже.
Типы данных
-
Структура версии операционной системы, используемая с
operatingSystemVersion
иisOperatingSystemAtLeastVersion:
.Объявление
Swift
struct NSOperatingSystemVersion { var majorVersion: Int var minorVersion: Int var patchVersion: Int init() init(majorVersion
majorVersion
: Int, minorVersionminorVersion
: Int, patchVersionpatchVersion
: Int) }Objective C
typedef struct { NSInteger majorVersion; NSInteger minorVersion; NSInteger patchVersion; } NSOperatingSystemVersion;
Константы
-
majorVersion
Основной номер версии, такой как 10 в версии 10.9.3.
-
minorVersion
Номер подверсии, такой как 9 в версии 10.9.3.
-
patchVersion
Номер выпуска обновления, такой как 3 в версии 10.9.3.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 8.0 и позже.
-
-
Флаги опции, используемые с
beginActivityWithOptions:reason:
иperformActivityWithOptions:reason:usingBlock:
.Объявление
Swift
struct NSActivityOptions : RawOptionSetType { init(_
rawValue
: UInt64) init(rawValuerawValue
: UInt64) static var IdleDisplaySleepDisabled: NSActivityOptions { get } static var IdleSystemSleepDisabled: NSActivityOptions { get } static var SuddenTerminationDisabled: NSActivityOptions { get } static var AutomaticTerminationDisabled: NSActivityOptions { get } static var UserInitiated: NSActivityOptions { get } static var UserInitiatedAllowingIdleSystemSleep: NSActivityOptions { get } static var Background: NSActivityOptions { get } static var LatencyCritical: NSActivityOptions { get } }Objective C
typedef enum : uint64_t { NSActivityIdleDisplaySleepDisabled = (1ULL << 40), NSActivityIdleSystemSleepDisabled = (1ULL << 20), NSActivitySuddenTerminationDisabled = (1ULL << 14), NSActivityAutomaticTerminationDisabled = (1ULL << 15), NSActivityUserInitiated = (0x00FFFFFFULL | NSActivityIdleSystemSleepDisabled ), NSActivityUserInitiatedAllowingIdleSystemSleep = (NSActivityUserInitiated & ~NSActivityIdleSystemSleepDisabled ), NSActivityBackground = 0x000000FFULL, NSActivityLatencyCritical = 0xFF00000000ULL, } NSActivityOptions;
Константы
-
IdleDisplaySleepDisabled
NSActivityIdleDisplaySleepDisabled
Флаг, чтобы потребовать, чтобы экран остался включенным.
Доступный в iOS 7.0 и позже.
-
IdleSystemSleepDisabled
NSActivityIdleSystemSleepDisabled
Флаг для предотвращения неактивного сна.
Это включено в
NSActivityUserInitiatedAllowingIdleSystemSleep
.Доступный в iOS 7.0 и позже.
-
SuddenTerminationDisabled
NSActivitySuddenTerminationDisabled
Флаг для предотвращения внезапного завершения.
Это включено в
NSActivityUserInitiatedAllowingIdleSystemSleep
.Доступный в iOS 7.0 и позже.
-
AutomaticTerminationDisabled
NSActivityAutomaticTerminationDisabled
Флаг для предотвращения автоматического завершения.
Это включено в
NSActivityUserInitiatedAllowingIdleSystemSleep
.Доступный в iOS 7.0 и позже.
-
UserInitiated
NSActivityUserInitiated
Флаг для указания приложения выполняет требуемое пользователями действие.
Доступный в iOS 7.0 и позже.
-
UserInitiatedAllowingIdleSystemSleep
NSActivityUserInitiatedAllowingIdleSystemSleep
Флаг для указания приложения выполняет требуемое пользователями действие, но что система может спать на неактивном.
Доступный в iOS 7.0 и позже.
-
Background
NSActivityBackground
Флаг для указания приложения инициировал некоторую работу, но не как прямой результат пользовательского запроса.
Доступный в iOS 7.0 и позже.
-
LatencyCritical
NSActivityLatencyCritical
Доступный в iOS 7.0 и позже.
Обсуждение
Для включения одного из этих отдельных флагов в одном из наборов используйте поразрядно
OR
; например, во время представления Вы могли бы использовать:NSActivityUserInitiated | NSActivityIdleDisplaySleepDisabled
Для исключения из одного из наборов используйте поразрядно
AND
сNOT
; например, во время пользователя инициировал действие, которое может быть безопасно завершено без взаимодействия приложений в случае выхода из системы, который Вы могли бы использовать:NSActivityUserInitiated & ~NSActivitySuddenTerminationDisabled
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в iOS 7.0 и позже.
-
-
Следующие константы предоставлены
NSProcessInfo
класс как возвращаемые значения дляoperatingSystem
.Объявление
Swift
var NSHPUXOperatingSystem: Int { get } var NSMACHOperatingSystem: Int { get } var NSOSF1OperatingSystem: Int { get } var NSSolarisOperatingSystem: Int { get } var NSSunOSOperatingSystem: Int { get } var NSWindows95OperatingSystem: Int { get } var NSWindowsNTOperatingSystem: Int { get }
Objective C
enum { NSWindowsNTOperatingSystem = 1, NSWindows95OperatingSystem, NSSolarisOperatingSystem, NSHPUXOperatingSystem, NSMACHOperatingSystem, NSSunOSOperatingSystem, NSOSF1OperatingSystem };
Константы
-
NSHPUXOperatingSystem
Указывает HP операционная система UX.
Доступный в iOS 2.0 и позже.
Осуждаемый в iOS 8.0.
-
NSMACHOperatingSystem
Указывает операционную систему OS X.
Доступный в iOS 2.0 и позже.
Осуждаемый в iOS 8.0.
-
NSOSF1OperatingSystem
Указывает операционную систему OSF/1.
Доступный в iOS 2.0 и позже.
Осуждаемый в iOS 8.0.
-
NSSolarisOperatingSystem
Указывает операционную систему Соляриса.
Доступный в iOS 2.0 и позже.
Осуждаемый в iOS 8.0.
-
NSSunOSOperatingSystem
Указывает Sun операционная система OS.
Доступный в iOS 2.0 и позже.
Осуждаемый в iOS 8.0.
-
NSWindows95OperatingSystem
Указывает операционную систему Windows 95.
Доступный в iOS 2.0 и позже.
Осуждаемый в iOS 8.0.
-
NSWindowsNTOperatingSystem
Указывает операционную систему Windows NT.
Доступный в iOS 2.0 и позже.
Осуждаемый в iOS 8.0.
-