NSStream
NSStream
абстрактный класс для объектов, представляющих потоки. Его интерфейс характерен для всех потоковых классов Какао, включая его конкретные подклассы NSInputStream
и NSOutputStream
.
NSStream
объекты обеспечивают простой способ считать и записать данные в и от множества носителей независящим от устройств способом. Можно создать потоковые объекты для данных, расположенных в памяти в файле, или в сети (использующие сокеты), и можно использовать потоковые объекты, не загружая все данные в память сразу.
По умолчанию, NSStream
экземпляры, которые не основаны на файле, являются non-seekable, односторонние потоки (несмотря на то, что пользовательские seekable подклассы возможны). Как только данные были предоставлены или использованы, данные не могут быть получены от потока.
Разделение на подклассы примечаний
NSStream
абстрактный класс, неспособный к инстанцированию и предназначенный, чтобы быть разделенным на подклассы. Это публикует программируемый интерфейс, для которого все подклассы должны принять и обеспечить реализации. Два предоставленных Apple конкретных подкласса NSStream
, NSInputStream
и NSOutputStream
, подходят в большинстве целей. Когда Вы хотите равноправный подкласс к, Однако могли бы быть ситуации NSInputStream
и NSOutputStream
. Например, Вы могли бы хотеть класс, реализующий полнодуплексный (двухсторонний) поток или класс, экземпляры которого способны к поиску через поток.
Методы для переопределения
Все подклассы должны полностью реализовать следующие методики, представленные в функциональных парах:
-
Реализация
open
открыть поток для чтения или записи и сделать поток доступным для клиента непосредственно или, если потоковый объект планируется на цикл выполнения делегату. Реализацияclose
закрыть поток и удалить потоковый объект из цикла выполнения, при необходимости. Закрытый поток должен все еще быть в состоянии принять новые свойства и сообщить о его текущих свойствах. Как только поток закрывается, он не может быть вновь открыт. -
Возвратите и установите делегата. Значением по умолчанию потоковый объект должен быть своим собственным делегатом; так a
setDelegate:
сообщение с параметромnil
должен восстановить этого делегата. Не сохраняйте делегата для предотвращения, сохраняют циклы.Для приобретения знаний о делегатах и делегации считайте «Делегацию» в Фундаментальном Руководстве по Какао.
scheduleInRunLoop:forMode:
иremoveFromRunLoop:forMode:
Реализация
scheduleInRunLoop:forMode:
запланировать потоковый объект на указанный цикл выполнения для указанного режима. РеализацияremoveFromRunLoop:forMode:
удалить объект из цикла выполнения. См. документациюNSRunLoop
класс для подробных данных. Как только потоковый объект для открытого потока планируется на цикл выполнения, это - ответственность подкласса, поскольку это обрабатывает потоковые данные для отправкиstream:handleEvent:
сообщения его делегату.propertyForKey:
иsetProperty:forKey:
Реализуйте эти методы, чтобы возвратить и установить, соответственно, значение свойства для указанного ключа. Можно добавить пользовательские свойства, но, несомненно, сможете обработать все свойства, определенные
NSStream
также.-
Реализация
streamStatus
возвратить текущий статус потока как постоянный NSStreamStatus; можно определить новые константы NSStreamStatus, но, несомненно, сможете обработатьNSStream
- определенные константы должным образом. РеализацияstreamError
возвратитьсяNSError
объект, представляющий текущую ошибку. Вы могли бы решить возвратить пользовательскоеNSError
объект, который может предоставить полную и локализованную информацию об ошибке.
Наследование
-
NSObject
-
NSStream
-
NSInputStream
-
NSOutputStream
-
NSObject
-
NSStream
-
NSInputStream
-
NSOutputStream
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.3 и позже.
-
getStreamsToHost (_: port:inputStream:outputStream:) + getStreamsToHost:port:inputStream:outputStream:
(OS X v10.10)Создает и возвращается ссылкой
NSInputStream
объект иNSOutputStream
объект для сокетного соединения с данным узлом на данном порту.Объявление
Swift
class func getStreamsToHost(_
host
: NSHost, portport
: Int, inputStreaminputStream
: AutoreleasingUnsafeMutablePointer<NSInputStream?>, outputStreamoutputStream
: AutoreleasingUnsafeMutablePointer<NSOutputStream?>)Objective C
+ (void)getStreamsToHost:(NSHost *)
host
port:(NSInteger)port
inputStream:(NSInputStream **)inputStream
outputStream:(NSOutputStream **)outputStream
Параметры
host
Узел, с которым можно соединиться.
port
Порт для соединения с на
host
.inputStream
По возврату, содержит входной поток. Если
nil
передается, потоковый объект не создается.outputStream
По возврату, содержит поток вывода. Если
nil
передается, потоковый объект не создается.Обсуждение
Если ни один
port
ниhost
должным образом указан, никакое сокетное соединение не сделано.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.3 и позже.
Осуждаемый в OS X v10.10.
-
Возвращает свойство получателя для данного ключа.
Объявление
Swift
func propertyForKey(_
key
: String) -> AnyObject?Objective C
- (id)propertyForKey:(NSString *)
key
Параметры
key
Ключ для одного из свойств получателя. Посмотрите Константы для описания доступных ключевых для свойства констант и присваиваемых значений.
Возвращаемое значение
Свойство получателя для ключа
key
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.3 и позже.
См. также
-
Попытки установить значение данного свойства получателя и возвратов булево значение, указывающее, принято ли значение получателем.
Объявление
Swift
func setProperty(_
property
: AnyObject?, forKeykey
: String) -> BoolObjective C
- (BOOL)setProperty:(id)
property
forKey:(NSString *)key
Параметры
property
Значение для
key
.key
Ключ для одного из свойств получателя. Посмотрите Константы для описания доступных ключевых для свойства констант и математических ожиданий.
Возвращаемое значение
YES
true
если значение принято получателем, иначеNO
false
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.3 и позже.
См. также
-
Возвращает делегата получателя.
Объявление
Swift
unowned(unsafe) var delegate: NSStreamDelegate?
Objective C
@property(assign) id<NSStreamDelegate> delegate
Возвращаемое значение
Делегат получателя. Делегат должен реализовать
NSStreamDelegate
Протокол.Обсуждение
По умолчанию поток является своим собственным делегатом и подклассами
NSInputStream
иNSOutputStream
должен поддержать настоящий договор.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.3 и позже.
См. также
-
Устанавливает делегата получателя.
Объявление
Swift
unowned(unsafe) var delegate: NSStreamDelegate?
Objective C
@property(assign) id<NSStreamDelegate> delegate
Параметры
delegate
Делегат к получателю.
Обсуждение
По умолчанию поток является своим собственным делегатом и подклассами
NSInputStream
иNSOutputStream
должен поддержать настоящий договор. Если Вы переопределяете этот метод в подклассе, передаваяnil
должен восстановить получатель как его собственного делегата. Делегаты не сохраняются.Для приобретения знаний о делегатах и делегации считайте «Делегацию» в Фундаментальном Руководстве по Какао.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.3 и позже.
См. также
-
Открывает поток получения.
Объявление
Swift
func open()
Objective C
- (void)open
Обсуждение
Поток должен быть создан, прежде чем он сможет быть открыт. После того, как открытый, поток не может быть закрыт и вновь открыт.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.3 и позже.
См. также
-
Закрывает получатель.
Объявление
Swift
func close()
Objective C
- (void)close
Обсуждение
Закрытие потока завершает поток байтов и выпускает системные ресурсы, зарезервированные для потока, когда это было открыто. Если поток был запланирован на цикл выполнения, закрытие потока неявно удаляет поток из цикла выполнения. Закрывающийся поток может все еще быть запрошен для его свойств.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.3 и позже.
См. также
-
Планирует получатель на данный выполненный цикл в данном режиме.
Объявление
Параметры
aRunLoop
Цикл выполнения, на который можно запланировать получатель.
mode
Режим для цикла выполнения.
Обсуждение
Если клиент не опрашивает поток, это ответственно за обеспечение, что поток планируется по крайней мере на один выполненный цикл и что выполняется по крайней мере один из циклов выполнения, на которые планируется поток.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.3 и позже.
См. также
-
Удаляет получатель из данного выполненного цикла, работающего в данном режиме.
Объявление
Параметры
aRunLoop
Цикл выполнения, на который был запланирован получатель.
mode
Режим для цикла выполнения.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.3 и позже.
См. также
-
Возвращает состояние получателя.
Объявление
Swift
var streamStatus: NSStreamStatus { get }
Objective C
@property(readonly) NSStreamStatus streamStatus
Возвращаемое значение
Состояние получателя.
Обсуждение
Посмотрите Константы для описания доступных констант NSStreamStatus.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.3 и позже.
-
Возвраты
NSError
объект, представляющий потоковую ошибку.Объявление
Swift
@NSCopying var streamError: NSError? { get }
Objective C
@property(readonly, copy) NSError *streamError
Возвращаемое значение
NSError
объект, представляющий потоковую ошибку, илиnil
если не встретились ни с какой ошибкой.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.3 и позже.
Типы данных
-
Тип, объявленный для констант, перечислен в Потоковых Константах Состояния.
Объявление
Swift
enum NSStreamStatus : UInt { case NotOpen case Opening case Open case Reading case Writing case AtEnd case Closed case Error }
Objective C
typedef NSUInteger NSStreamStatus;
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.3 и позже.
-
Эти константы указывают текущий статус потока. Они возвращаются
streamStatus
.Объявление
Swift
enum NSStreamStatus : UInt { case NotOpen case Opening case Open case Reading case Writing case AtEnd case Closed case Error }
Objective C
typedef enum { NSStreamStatusNotOpen = 0, NSStreamStatusOpening = 1, NSStreamStatusOpen = 2, NSStreamStatusReading = 3, NSStreamStatusWriting = 4, NSStreamStatusAtEnd = 5, NSStreamStatusClosed = 6, NSStreamStatusError = 7 };
Константы
-
NotOpen
NSStreamStatusNotOpen
Поток не открыт для чтения или записи. Это состояние возвращается перед базовым вызовом для открытия потока, но после того, как это было создано.
Доступный в OS X v10.3 и позже.
-
Opening
NSStreamStatusOpening
Поток находится в процессе того, чтобы быть открытым для чтения или для записи. Для сетевых потоков это состояние могло бы включать время после того, как поток был открыт, но в то время как происходит сетевое разрешение DNS.
Доступный в OS X v10.3 и позже.
-
Open
NSStreamStatusOpen
Поток открыт, но не происходят никакое чтение или запись.
Доступный в OS X v10.3 и позже.
-
Reading
NSStreamStatusReading
Данные считываются из потока. Если код другого потока должен был вызвать, это состояние было бы возвращено
streamStatus
на потоке, в то время как aread:maxLength:
вызовите (NSInputStream
) происходило.Доступный в OS X v10.3 и позже.
-
Writing
NSStreamStatusWriting
Данные пишутся в поток. Если код другого потока должен был вызвать, это состояние было бы возвращено
streamStatus
на потоке, в то время как awrite:maxLength:
вызовите (NSOutputStream
) происходило.Доступный в OS X v10.3 и позже.
-
AtEnd
NSStreamStatusAtEnd
Больше нет данных для чтения, или больше данных не может быть записано в поток. Когда это состояние возвращается, поток находится в режиме «неблокирования», и никакие данные не доступны.
Доступный в OS X v10.3 и позже.
-
Closed
NSStreamStatusClosed
Поток закрывается (
close
был вызван на нем).Доступный в OS X v10.3 и позже.
-
Error
NSStreamStatusError
С удаленным концом соединения нельзя связаться, или соединение было разъединено по некоторой другой причине.
Доступный в OS X v10.3 и позже.
-
-
Один или больше этих констант может быть отправлен делегату как немного поля во втором параметре stream:handleEvent:.
Объявление
Swift
struct NSStreamEvent : RawOptionSetType { init(_
rawValue
: UInt) init(rawValuerawValue
: UInt) static var None: NSStreamEvent { get } static var OpenCompleted: NSStreamEvent { get } static var HasBytesAvailable: NSStreamEvent { get } static var HasSpaceAvailable: NSStreamEvent { get } static var ErrorOccurred: NSStreamEvent { get } static var EndEncountered: NSStreamEvent { get } }Objective C
typedef enum : NSUInteger { NSStreamEventNone = 0, NSStreamEventOpenCompleted = 1 << 0, NSStreamEventHasBytesAvailable = 1 << 1, NSStreamEventHasSpaceAvailable = 1 << 2, NSStreamEventErrorOccurred = 1 << 3, NSStreamEventEndEncountered = 1 << 4 } NSStreamEvent;
Константы
-
None
NSStreamEventNone
Никакое событие не имело место.
Доступный в OS X v10.3 и позже.
-
OpenCompleted
NSStreamEventOpenCompleted
Открытое завершилось успешно.
Доступный в OS X v10.3 и позже.
-
HasBytesAvailable
NSStreamEventHasBytesAvailable
Поток имеет байты, которые будут считаны.
Доступный в OS X v10.3 и позже.
-
HasSpaceAvailable
NSStreamEventHasSpaceAvailable
Поток может принять байты для записи.
Доступный в OS X v10.3 и позже.
-
ErrorOccurred
NSStreamEventErrorOccurred
Ошибка произошла на потоке.
Доступный в OS X v10.3 и позже.
-
EndEncountered
NSStreamEventEndEncountered
Конец потока был достигнут.
Доступный в OS X v10.3 и позже.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.3 и позже.
-
-
NSStream
определяет эти строковые константы как ключи для доступа к потоковому использованию свойствpropertyForKey:
и установка свойств сsetProperty:forKey:
:Объявление
Swift
let NSStreamSocketSecurityLevelKey: NSString! let NSStreamSOCKSProxyConfigurationKey: NSString! let NSStreamDataWrittenToMemoryStreamKey: NSString! let NSStreamFileCurrentOffsetKey: NSString! let NSStreamNetworkServiceType: NSString!
Objective C
NSString * const NSStreamSocketSecurityLevelKey; NSString * const NSStreamSOCKSProxyConfigurationKey; NSString * const NSStreamSOCKSProxyHostKey; NSString * const NSStreamSOCKSProxyPortKey; NSString * const NSStreamSOCKSProxyVersionKey; NSString * const NSStreamSOCKSProxyUserKey; NSString * const NSStreamSOCKSProxyPasswordKey; NSString * const NSStreamSOCKSProxyVersion4; NSString * const NSStreamSOCKSProxyVersion5; NSString * const NSStreamDataWrittenToMemoryStreamKey; NSString * const NSStreamFileCurrentOffsetKey; NSString * const NSStreamNetworkServiceType;
Константы
-
NSStreamSocketSecurityLevelKey
NSStreamSocketSecurityLevelKey
Уровень безопасности целевого потока. Посмотрите Уровень безопасности Уровня защищенных сокетов (SSL) для списка возможных значений.
Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSProxyConfigurationKey
NSStreamSOCKSProxyConfigurationKey
Значение
NSDictionary
объект, содержащий SOCKS, проксирует конфигурационную информацию.Словарь возвратился из платформы Конфигурации системы для прокси SOCKS, обычно достаточен.
Доступный в OS X v10.3 и позже.
-
NSStreamDataWrittenToMemoryStreamKey
NSStreamDataWrittenToMemoryStreamKey
Значение
NSData
экземпляр, содержащий данные, записанные в поток памяти.Используйте это свойство, когда Вам инстанцируют объекта потока вывода для сбора записанных данных в памяти. Значение этого свойства только для чтения.
Доступный в OS X v10.3 и позже.
-
NSStreamFileCurrentOffsetKey
NSStreamFileCurrentOffsetKey
Значение
NSNumber
объект, содержащий текущее абсолютное смещение потока.Доступный в OS X v10.3 и позже.
-
NSStreamNetworkServiceType
NSStreamNetworkServiceType
Тип службы для потока. Обеспечение типа службы позволяет системе должным образом обрабатывать определенные атрибуты потока, включая поведение маршрутизации и приостановки. Большинство потоков не должно устанавливать это свойство. Посмотрите Потоковые Типы Службы для списка возможных значений.
Доступный в OS X v10.7 и позже.
-
-
NSStream
определяет эти строковые константы для представления ошибочных доменов, которые могут быть возвращеныstreamError
:Объявление
Objective C
NSString * const NSStreamSocketSSLErrorDomain ; NSString * const NSStreamSOCKSErrorDomain ;
Константы
-
NSStreamSocketSSLErrorDomain
NSStreamSocketSSLErrorDomain
Ошибочный домен, используемый
NSError
при создании отчетов об ошибках SSL.Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSErrorDomain
NSStreamSOCKSErrorDomain
Ошибочный домен, используемый
NSError
при создании отчетов об ошибках SOCKS.Доступный в OS X v10.3 и позже.
-
-
NSStream
определяет эти строковые константы для указания уровня безопасности уровня защищенных сокетов (SSL).Объявление
Swift
let NSStreamSocketSecurityLevelNone: NSString! let NSStreamSocketSecurityLevelSSLv2: NSString! let NSStreamSocketSecurityLevelSSLv3: NSString! let NSStreamSocketSecurityLevelTLSv1: NSString! let NSStreamSocketSecurityLevelNegotiatedSSL: NSString!
Objective C
NSString * const NSStreamSocketSecurityLevelNone; NSString * const NSStreamSocketSecurityLevelSSLv2; NSString * const NSStreamSocketSecurityLevelSSLv3; NSString * const NSStreamSocketSecurityLevelTLSv1; NSString * const NSStreamSocketSecurityLevelNegotiatedSSL
Константы
-
NSStreamSocketSecurityLevelNone
NSStreamSocketSecurityLevelNone
Указывает, что никакой уровень безопасности не установлен для потока сокета.
Доступный в OS X v10.3 и позже.
-
NSStreamSocketSecurityLevelSSLv2
NSStreamSocketSecurityLevelSSLv2
Указывает что версия SSL, которая будет установлена как протокол системы защиты для потока сокета.
Доступный в OS X v10.3 и позже.
-
NSStreamSocketSecurityLevelSSLv3
NSStreamSocketSecurityLevelSSLv3
Указывает, что версия 3 SSL установлена как протокол системы защиты для потока сокета.
Доступный в OS X v10.3 и позже.
-
NSStreamSocketSecurityLevelTLSv1
NSStreamSocketSecurityLevelTLSv1
Указывает, что версия 1 TLS установлена как протокол системы защиты для потока сокета.
Доступный в OS X v10.3 и позже.
-
NSStreamSocketSecurityLevelNegotiatedSSL
NSStreamSocketSecurityLevelNegotiatedSSL
Указывает, что протокол системы защиты высшего уровня, который может быть согласован быть установленным как протокол системы защиты для потока сокета.
Доступный в OS X v10.3 и позже.
Обсуждение
Вы получаете доступ и устанавливаете эти значения с помощью
NSStreamSocketSecurityLevelKey
ключ свойства. -
-
NSStream
определяет эти строковые константы для использования в качестве ключей для указания значений конфигурации прокси SOCKS вNSDictionary
объект.Объявление
Swift
let NSStreamSOCKSProxyHostKey: NSString! let NSStreamSOCKSProxyPortKey: NSString! let NSStreamSOCKSProxyVersionKey: NSString! let NSStreamSOCKSProxyUserKey: NSString! let NSStreamSOCKSProxyPasswordKey: NSString! let NSStreamSOCKSProxyVersion4: NSString! let NSStreamSOCKSProxyVersion5: NSString!
Objective C
NSString * const NSStreamSOCKSProxyHostKey; NSString * const NSStreamSOCKSProxyPortKey; NSString * const NSStreamSOCKSProxyVersionKey; NSString * const NSStreamSOCKSProxyUserKey; NSString * const NSStreamSOCKSProxyPasswordKey; NSString * const NSStreamSOCKSProxyVersion4; NSString * const NSStreamSOCKSProxyVersion5
Константы
-
NSStreamSOCKSProxyHostKey
NSStreamSOCKSProxyHostKey
Значение
NSString
объект, представляющий прокси-сервер SOCKS.Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSProxyPortKey
NSStreamSOCKSProxyPortKey
Значение
NSNumber
объект, содержащий целое число, представляющее порт, на котором слушает прокси.Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSProxyVersionKey
NSStreamSOCKSProxyVersionKey
Значение также
NSStreamSOCKSProxyVersion4
илиNSStreamSOCKSProxyVersion5
.Если этот ключ не присутствует,
NSStreamSOCKSProxyVersion5
используется по умолчанию.Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSProxyUserKey
NSStreamSOCKSProxyUserKey
Значение
NSString
объект, содержащий имя пользователя.Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSProxyPasswordKey
NSStreamSOCKSProxyPasswordKey
Значение
NSString
объект, содержащий пароль пользователя.Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSProxyVersion4
NSStreamSOCKSProxyVersion4
Возможное значение для
NSStreamSOCKSProxyVersionKey
.Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSProxyVersion5
NSStreamSOCKSProxyVersion5
Возможное значение для
NSStreamSOCKSProxyVersionKey
.Доступный в OS X v10.3 и позже.
Обсуждение
Вы устанавливаете объект словаря как текущую конфигурацию прокси SOCKS с помощью
NSStreamSOCKSProxyConfigurationKey
ключ -
-
NSStream
определяет эти строковые константы для указания типа службы потока.Объявление
Swift
let NSStreamNetworkServiceTypeVoIP: NSString! let NSStreamNetworkServiceTypeVideo: NSString! let NSStreamNetworkServiceTypeBackground: NSString! let NSStreamNetworkServiceTypeVoice: NSString!
Objective C
NSString * const NSStreamNetworkServiceTypeVoIP NSString * const NSStreamNetworkServiceTypeVideo NSString * const NSStreamNetworkServiceTypeBackground NSString * const NSStreamNetworkServiceTypeVoice
Константы
-
NSStreamNetworkServiceTypeVoIP
NSStreamNetworkServiceTypeVoIP
Указывает, что поток предоставляет услугу VoIP.
Доступный в OS X v10.7 и позже.
-
NSStreamNetworkServiceTypeVideo
NSStreamNetworkServiceTypeVideo
Указывает, что поток предоставляет видео услугу.
Доступный в OS X v10.7 и позже.
-
NSStreamNetworkServiceTypeBackground
NSStreamNetworkServiceTypeBackground
Указывает, что поток предоставляет фоновую услугу.
Доступный в OS X v10.7 и позже.
-
NSStreamNetworkServiceTypeVoice
NSStreamNetworkServiceTypeVoice
Указывает, что поток обеспечивает услугу передачи речи.
Доступный в OS X v10.7 и позже.
-