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 *)hostport:(NSInteger)portinputStream:(NSInputStream **)inputStreamoutputStream:(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)propertyforKey:(NSString *)keyПараметры
propertyЗначение для
key.keyКлюч для одного из свойств получателя. Посмотрите Константы для описания доступных ключевых для свойства констант и математических ожиданий.
Возвращаемое значение
YEStrueесли значение принято получателем, иначеNOfalse.Оператор импорта
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 };Константы
-
NotOpenNSStreamStatusNotOpenПоток не открыт для чтения или записи. Это состояние возвращается перед базовым вызовом для открытия потока, но после того, как это было создано.
Доступный в OS X v10.3 и позже.
-
OpeningNSStreamStatusOpeningПоток находится в процессе того, чтобы быть открытым для чтения или для записи. Для сетевых потоков это состояние могло бы включать время после того, как поток был открыт, но в то время как происходит сетевое разрешение DNS.
Доступный в OS X v10.3 и позже.
-
OpenNSStreamStatusOpenПоток открыт, но не происходят никакое чтение или запись.
Доступный в OS X v10.3 и позже.
-
ReadingNSStreamStatusReadingДанные считываются из потока. Если код другого потока должен был вызвать, это состояние было бы возвращено
streamStatusна потоке, в то время как aread:maxLength:вызовите (NSInputStream) происходило.Доступный в OS X v10.3 и позже.
-
WritingNSStreamStatusWritingДанные пишутся в поток. Если код другого потока должен был вызвать, это состояние было бы возвращено
streamStatusна потоке, в то время как awrite:maxLength:вызовите (NSOutputStream) происходило.Доступный в OS X v10.3 и позже.
-
AtEndNSStreamStatusAtEndБольше нет данных для чтения, или больше данных не может быть записано в поток. Когда это состояние возвращается, поток находится в режиме «неблокирования», и никакие данные не доступны.
Доступный в OS X v10.3 и позже.
-
ClosedNSStreamStatusClosedПоток закрывается (
closeбыл вызван на нем).Доступный в OS X v10.3 и позже.
-
ErrorNSStreamStatusErrorС удаленным концом соединения нельзя связаться, или соединение было разъединено по некоторой другой причине.
Доступный в 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;Константы
-
NoneNSStreamEventNoneНикакое событие не имело место.
Доступный в OS X v10.3 и позже.
-
OpenCompletedNSStreamEventOpenCompletedОткрытое завершилось успешно.
Доступный в OS X v10.3 и позже.
-
HasBytesAvailableNSStreamEventHasBytesAvailableПоток имеет байты, которые будут считаны.
Доступный в OS X v10.3 и позже.
-
HasSpaceAvailableNSStreamEventHasSpaceAvailableПоток может принять байты для записи.
Доступный в OS X v10.3 и позже.
-
ErrorOccurredNSStreamEventErrorOccurredОшибка произошла на потоке.
Доступный в OS X v10.3 и позже.
-
EndEncounteredNSStreamEventEndEncounteredКонец потока был достигнут.
Доступный в 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;Константы
-
NSStreamSocketSecurityLevelKeyNSStreamSocketSecurityLevelKeyУровень безопасности целевого потока. Посмотрите Уровень безопасности Уровня защищенных сокетов (SSL) для списка возможных значений.
Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSProxyConfigurationKeyNSStreamSOCKSProxyConfigurationKeyЗначение
NSDictionaryобъект, содержащий SOCKS, проксирует конфигурационную информацию.Словарь возвратился из платформы Конфигурации системы для прокси SOCKS, обычно достаточен.
Доступный в OS X v10.3 и позже.
-
NSStreamDataWrittenToMemoryStreamKeyNSStreamDataWrittenToMemoryStreamKeyЗначение
NSDataэкземпляр, содержащий данные, записанные в поток памяти.Используйте это свойство, когда Вам инстанцируют объекта потока вывода для сбора записанных данных в памяти. Значение этого свойства только для чтения.
Доступный в OS X v10.3 и позже.
-
NSStreamFileCurrentOffsetKeyNSStreamFileCurrentOffsetKeyЗначение
NSNumberобъект, содержащий текущее абсолютное смещение потока.Доступный в OS X v10.3 и позже.
-
NSStreamNetworkServiceTypeNSStreamNetworkServiceTypeТип службы для потока. Обеспечение типа службы позволяет системе должным образом обрабатывать определенные атрибуты потока, включая поведение маршрутизации и приостановки. Большинство потоков не должно устанавливать это свойство. Посмотрите Потоковые Типы Службы для списка возможных значений.
Доступный в OS X v10.7 и позже.
-
-
NSStreamопределяет эти строковые константы для представления ошибочных доменов, которые могут быть возвращеныstreamError:Объявление
Objective C
NSString * const NSStreamSocketSSLErrorDomain ; NSString * const NSStreamSOCKSErrorDomain ;Константы
-
NSStreamSocketSSLErrorDomainNSStreamSocketSSLErrorDomainОшибочный домен, используемый
NSErrorпри создании отчетов об ошибках SSL.Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSErrorDomainNSStreamSOCKSErrorDomainОшибочный домен, используемый
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Константы
-
NSStreamSocketSecurityLevelNoneNSStreamSocketSecurityLevelNoneУказывает, что никакой уровень безопасности не установлен для потока сокета.
Доступный в OS X v10.3 и позже.
-
NSStreamSocketSecurityLevelSSLv2NSStreamSocketSecurityLevelSSLv2Указывает что версия SSL, которая будет установлена как протокол системы защиты для потока сокета.
Доступный в OS X v10.3 и позже.
-
NSStreamSocketSecurityLevelSSLv3NSStreamSocketSecurityLevelSSLv3Указывает, что версия 3 SSL установлена как протокол системы защиты для потока сокета.
Доступный в OS X v10.3 и позже.
-
NSStreamSocketSecurityLevelTLSv1NSStreamSocketSecurityLevelTLSv1Указывает, что версия 1 TLS установлена как протокол системы защиты для потока сокета.
Доступный в OS X v10.3 и позже.
-
NSStreamSocketSecurityLevelNegotiatedSSLNSStreamSocketSecurityLevelNegotiatedSSLУказывает, что протокол системы защиты высшего уровня, который может быть согласован быть установленным как протокол системы защиты для потока сокета.
Доступный в 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Константы
-
NSStreamSOCKSProxyHostKeyNSStreamSOCKSProxyHostKeyЗначение
NSStringобъект, представляющий прокси-сервер SOCKS.Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSProxyPortKeyNSStreamSOCKSProxyPortKeyЗначение
NSNumberобъект, содержащий целое число, представляющее порт, на котором слушает прокси.Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSProxyVersionKeyNSStreamSOCKSProxyVersionKeyЗначение также
NSStreamSOCKSProxyVersion4илиNSStreamSOCKSProxyVersion5.Если этот ключ не присутствует,
NSStreamSOCKSProxyVersion5используется по умолчанию.Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSProxyUserKeyNSStreamSOCKSProxyUserKeyЗначение
NSStringобъект, содержащий имя пользователя.Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSProxyPasswordKeyNSStreamSOCKSProxyPasswordKeyЗначение
NSStringобъект, содержащий пароль пользователя.Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSProxyVersion4NSStreamSOCKSProxyVersion4Возможное значение для
NSStreamSOCKSProxyVersionKey.Доступный в OS X v10.3 и позже.
-
NSStreamSOCKSProxyVersion5NSStreamSOCKSProxyVersion5Возможное значение для
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Константы
-
NSStreamNetworkServiceTypeVoIPNSStreamNetworkServiceTypeVoIPУказывает, что поток предоставляет услугу VoIP.
Доступный в OS X v10.7 и позже.
-
NSStreamNetworkServiceTypeVideoNSStreamNetworkServiceTypeVideoУказывает, что поток предоставляет видео услугу.
Доступный в OS X v10.7 и позже.
-
NSStreamNetworkServiceTypeBackgroundNSStreamNetworkServiceTypeBackgroundУказывает, что поток предоставляет фоновую услугу.
Доступный в OS X v10.7 и позже.
-
NSStreamNetworkServiceTypeVoiceNSStreamNetworkServiceTypeVoiceУказывает, что поток обеспечивает услугу передачи речи.
Доступный в OS X v10.7 и позже.
-
