NSThread
NSThread
возразите управляет потоком выполнения. Используйте этот класс, когда Вы захотите выполнить метод Objective C в его собственном потоке выполнения. Потоки особенно полезны, когда Вы должны выполнить длинную задачу, но не хотите, чтобы она блокировала выполнение остальной части приложения. В частности можно использовать потоки, чтобы избежать блокировать основной поток приложения, обрабатывающего пользовательский интерфейс и событийные действия. Потоки могут также использоваться для деления большого задания на несколько меньших заданий, которые могут привести к увеличениям производительности на многожильных компьютерах.
До OS X v10.5, единственный способ начать новую дискуссию состоит в том, чтобы использовать detachNewThreadSelector:toTarget:withObject:
метод. В OS X v10.5 и позже, можно создать экземпляры NSThread
и запустите их в более позднее время с помощью start
метод.
В OS Xv10.5, NSThread
класс поддерживает семантику, подобную тем NSOperation
для контроля условия во время выполнения потока. Можно использовать их семантика, чтобы отменить выполнение потока или определить, выполняет ли поток все еще или закончил свою задачу. Отмена потока требует поддержки со стороны Вашего кода потока; см. описание для cancel
для получения дополнительной информации.
Разделение на подклассы примечаний
В OS X v10.5 и позже, можно разделить на подклассы NSThread
и переопределение main
метод для реализации основной точки входа потока. Если Вы переопределяете main
, Вы не должны вызывать наследованное поведение путем вызова super
.
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает инициализированный
NSThread
объект.Объявление
Swift
init()
Objective C
- (instancetype)init
Возвращаемое значение
Инициализированный
NSThread
объект.Обсуждение
Это - определяемый инициализатор для
NSThread
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
-
Возвраты
NSThread
объект инициализируется с данными параметрами.Объявление
Swift
convenience init(target
target
: AnyObject, selectorselector
: Selector, objectargument
: AnyObject?)Objective C
- (instancetype)initWithTarget:(id)
target
selector:(SEL)selector
object:(id)argument
Параметры
target
Объект тот, к который сообщение, указанное
selector
отправляется.selector
Селектор для сообщения для отправки к
target
. Этот селектор должен взять только один параметр и не должен иметь возвращаемого значения.argument
Отдельный аргумент передал цели. Может быть
nil
.Возвращаемое значение
NSThread
объект инициализируется с данными параметрами.Обсуждение
Объекты
target
иargument
сохраняются во время выполнения отдельного потока. Когда поток наконец выходит, они выпущены.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Отсоединяет новый поток и использует указанный селектор в качестве точки входа потока.
Объявление
Swift
class func detachNewThreadSelector(_
aSelector
: Selector, toTargetaTarget
: AnyObject, withObjectanArgument
: AnyObject?)Objective C
+ (void)detachNewThreadSelector:(SEL)
aSelector
toTarget:(id)aTarget
withObject:(id)anArgument
Параметры
aSelector
Селектор для сообщения для отправки к цели. Этот селектор должен взять только один параметр и не должен иметь возвращаемого значения.
aTarget
Объект, который получит сообщение
aSelector
на новом потоке.anArgument
Отдельный аргумент передал цели. Может быть
nil
.Обсуждение
Объекты
aTarget
иanArgument
сохраняются во время выполнения отдельного потока, затем выпустил. Из отдельного потока выходят (использованиеexit
метод класса), как толькоaTarget
завершил выполнениеaSelector
метод.Если этот поток является первым потоком, отсоединенным в приложении, этот метод отправляет
NSWillBecomeMultiThreadedNotification
с объектомnil
к центру уведомления по умолчанию.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Запускает получатель.
Объявление
Swift
func start()
Objective C
- (void)start
Обсуждение
Этот метод порождает новый поток и вызывает получатель
main
метод на новом потоке. Если Вы инициализировали получатель с целью и селектором, значением по умолчаниюmain
метод вызывает тот селектор автоматически.Если этот поток является первым потоком, отсоединенным в приложении, этот метод отправляет
NSWillBecomeMultiThreadedNotification
с объектомnil
к центру уведомления по умолчанию.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
-
Основная подпрограмма точки входа для потока.
Объявление
Swift
func main()
Objective C
- (void)main
Обсуждение
Реализация по умолчанию этого метода берет цель, и селектор раньше инициализировал получатель и вызывает селектор на указанную цель. Если Вы разделяете на подклассы
NSThread
, можно переопределить этот метод и использовать его для реализации основной части потока вместо этого. Если Вы делаете так, Вы не должны вызыватьsuper
.Вы никогда не должны вызывать этот метод непосредственно. Необходимо всегда запускать поток путем вызова
start
метод.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Блокирует текущий поток до указанного времени.
Объявление
Swift
class func sleepUntilDate(_
aDate
: NSDate)Objective C
+ (void)sleepUntilDate:(NSDate *)
aDate
Параметры
aDate
Время, в которое можно продолжить обрабатывать.
Обсуждение
В то время как поток блокируется, никакая обработка цикла выполнения не происходит.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Сны поток для данного временного интервала.
Объявление
Swift
class func sleepForTimeInterval(_
ti
: NSTimeInterval)Objective C
+ (void)sleepForTimeInterval:(NSTimeInterval)
ti
Параметры
ti
Продолжительность сна.
Обсуждение
В то время как поток блокируется, никакая обработка цикла выполнения не происходит.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
-
Завершает текущий поток.
Объявление
Swift
class func exit()
Objective C
+ (void)exit
Обсуждение
Этот метод использует
currentThread
метод класса получить доступ к текущему потоку. Прежде, чем выйти из потока, этот метод отправляетNSThreadWillExitNotification
с потоком, вышедшим к центру уведомления по умолчанию. Поскольку уведомления поставлены синхронно, все наблюдателиNSThreadWillExitNotification
как гарантируют, получат уведомление перед выходами потока.Вызова этого метода нужно избежать, поскольку это не дает Вашему потоку шанс очистить любые ресурсы, которые это выделило во время его выполнения.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Изменяет отмененное состояние получателя, чтобы указать, что это должно выйти.
Объявление
Swift
func cancel()
Objective C
- (void)cancel
Обсуждение
Семантика этого метода совпадает с используемыми для
NSOperation
объект. Этот метод устанавливает информацию состояния в получателе, тогда отражающемсяisCancelled
метод. Потоки, поддерживающие отмену, должны периодически вызыватьisCancelled
метод, чтобы определить, был ли поток фактически отменен, и выход, если это было.Для получения дополнительной информации об отмене и объектах операции, см. Ссылку класса NSOperation.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
выполнение выполнение
СвойствоБулево значение, указывающее, выполняется ли получатель. (только для чтения)
Объявление
Swift
var executing: Bool { get }
Objective C
@property(readonly, getter=isExecuting) BOOL executing
Обсуждение
YES
true
если получатель выполняется, иначеNO
false
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
законченный законченный
СвойствоБулево значение, указывающее, закончил ли получатель выполнение. (только для чтения)
Объявление
Swift
var finished: Bool { get }
Objective C
@property(readonly, getter=isFinished) BOOL finished
Обсуждение
YES
true
если получатель закончил выполнение, иначеNO
false
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
отмененный отмененный
СвойствоБулево значение, указывающее, отменяется ли получатель. (только для чтения)
Объявление
Swift
var cancelled: Bool { get }
Objective C
@property(readonly, getter=isCancelled) BOOL cancelled
Обсуждение
YES
true
если получатель был отменен, иначеNO
false
.Если Ваш поток поддерживает отмену, он должен периодически проверять это свойство и выход, если он когда-нибудь возвращается
YES
true
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Возвращает булево значение, указывающее, является ли текущий поток основным потоком.
Объявление
Swift
class func isMainThread() -> Bool
Objective C
+ (BOOL)isMainThread
Возвращаемое значение
YES
true
если текущий поток является основным потоком, иначеNO
false
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
isMainThread isMainThread
СвойствоБулево значение, указывающее, является ли получатель основным потоком. (только для чтения)
Объявление
Swift
var isMainThread: Bool { get }
Objective C
@property(readonly) BOOL isMainThread
Обсуждение
YES
true
если получатель является основным потоком, иначеNO
false
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
-
Возвраты
NSThread
объект, представляющий основной поток.Возвращаемое значение
NSThread
объект, представляющий основной поток.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Возвраты, многопоточно ли приложение.
Объявление
Swift
class func isMultiThreaded() -> Bool
Objective C
+ (BOOL)isMultiThreaded
Возвращаемое значение
YES
true
если приложение многопоточно,NO
false
иначе.Обсуждение
Если поток когда-либо отсоединялся от основного потока с помощью также, заявление рассматривается многопоточное
detachNewThreadSelector:toTarget:withObject:
илиstart
. При отсоединении потока в приложении с помощью некакао API, такой как POSIX или Multiprocessing Services APIs, этот метод мог все еще возвратитьсяNO
false
. Отдельный поток не должен в настоящее время работать за приложением, которое будут считать многопоточным — этот метод только указывает, был ли порожден единственный поток.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает объект потока представление текущего потока выполнения.
Возвращаемое значение
Объект потока представление текущего потока выполнения.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает массив, содержащий обратные адреса стека вызовов.
Объявление
Swift
class func callStackReturnAddresses() -> [AnyObject]
Objective C
+ (NSArray *)callStackReturnAddresses
Возвращаемое значение
Массив, содержащий обратные адреса стека вызовов.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает массив, содержащий символы стека вызовов.
Объявление
Swift
class func callStackSymbols() -> [AnyObject]
Objective C
+ (NSArray *)callStackSymbols
Возвращаемое значение
Массив, содержащий символы стека вызовов.
Обсуждение
Этот метод возвращает массив строк, описывающих след стека вызовов текущего потока в данный момент, этот метод вызвали. Формат каждой строки является необоротным и определяется
backtrace_symbols()
APIОператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
-
threadDictionary threadDictionary
СвойствоСловарь объекта потока. (только для чтения)
Объявление
Swift
var threadDictionary: NSMutableDictionary? { get }
Objective C
@property(readonly, retain) NSMutableDictionary *threadDictionary
Обсуждение
Можно использовать возвращенный словарь, чтобы хранить специфичные для потока данные. Словарь потока не используется во время никаких манипуляций
NSThread
объект — это - просто место, где можно хранить любые интересные данные. Например, Основа использует его для хранения значения по умолчанию потокаNSConnection
иNSAssertionHandler
экземпляры. Можно определить собственные ключи для словаря.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Размер штабеля получателя, в байтах.
Обсуждение
Это значение должно быть в байтах и кратном числе 4 КБ.
Для изменения размера штабеля необходимо установить это свойство прежде, чем запустить поток. При установке размера штабеля после того, как запустился поток, изменяет размер атрибута (который отражается
stackSize
метод), но это не влияет на фактическое число страниц, отложенных для потока.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает приоритет текущего потока.
Возвращаемое значение
Приоритет текущего потока, указанный числом с плавающей точкой от 0,0 до 1,0, где 1.0 самый высокий приоритет.
Обсуждение
Приоритеты в этом диапазоне отображаются на приоритетных значениях операционной системы. «Типичный» приоритет потока мог бы быть 0.5, но потому что приоритет определяется ядром, нет никакой гарантии, каково это значение фактически будет.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
-
threadPriority threadPriority
СвойствоПриоритет получателя
Обсуждение
Приоритет потока, указанный числом с плавающей точкой от 0,0 до 1,0, где 1.0 самый высокий приоритет.
Приоритеты в этом диапазоне отображаются на приоритетных значениях операционной системы. «Типичный» приоритет потока мог бы быть 0.5, но потому что приоритет определяется ядром, нет никакой гарантии, каково это значение фактически будет.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
-
Устанавливает приоритет текущего потока.
Объявление
Swift
class func setThreadPriority(_
priority
: Double) -> BoolObjective C
+ (BOOL)setThreadPriority:(double)
priority
Параметры
priority
Новый приоритет, указанный с числом с плавающей точкой от 0,0 до 1,0, где 1.0 самый высокий приоритет.
Возвращаемое значение
YES
true
если распределение приоритетов успешно выполнилось,NO
false
иначе.Обсуждение
Приоритеты в этом диапазоне отображаются на приоритетных значениях операционной системы.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
См. также
-
Не реализованный.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
NSThread
возразите отправляет это уведомление, когда оно получаетexit
сообщение, перед выходами потока. Методы наблюдателя, вызванные для получения этого уведомления, выполняются в выходящем потоке, прежде чем это выйдет.Объект уведомления является выходом
NSThread
объект. Это уведомление не содержит auserInfo
словарь.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Отправленный, когда первый поток отсоединяется от текущего потока.
NSThread
класс отправляет это уведомление самое большее один раз — в первый раз, когда поток отсоединяется с помощьюdetachNewThreadSelector:toTarget:withObject:
илиstart
метод. Последующие вызовы тех методов не отправляют это уведомление. Наблюдателям этого уведомления вызвали их метод уведомления в основном потоке, не новом потоке. Методы уведомления наблюдателя всегда выполняются, прежде чем новый поток начинает выполняться.Это уведомление не содержит объект уведомления или a
userInfo
словарь.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.