NSStream
Наследование
-
NSObject -
NSStream -
NSInputStream -
NSOutputStream
-
NSObject -
NSStream -
NSInputStream -
NSOutputStream
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в iOS 2.0 и позже.
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объект, который может предоставить полную и локализованную информацию об ошибке.
-
Возвращает свойство получателя для данного ключа.
Объявление
Swift
func propertyForKey(_key: String) -> AnyObject?Objective C
- (id)propertyForKey:(NSString *)keyПараметры
keyКлюч для одного из свойств получателя. Посмотрите Константы для описания доступных ключевых для свойства констант и присваиваемых значений.
Возвращаемое значение
Свойство получателя для ключа
key.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
См. также
-
Попытки установить значение данного свойства получателя и возвратов булево значение, указывающее, принято ли значение получателем.
Объявление
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Доступность
Доступный в iOS 2.0 и позже.
См. также
-
Возвращает делегата получателя.
Объявление
Swift
unowned(unsafe) var delegate: NSStreamDelegate?Objective C
@property(assign) id<NSStreamDelegate> delegateВозвращаемое значение
Делегат получателя. Делегат должен реализовать
NSStreamDelegateПротокол.Обсуждение
По умолчанию поток является своим собственным делегатом и подклассами
NSInputStreamиNSOutputStreamдолжен поддержать настоящий договор.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
См. также
-
Устанавливает делегата получателя.
Объявление
Swift
unowned(unsafe) var delegate: NSStreamDelegate?Objective C
@property(assign) id<NSStreamDelegate> delegateПараметры
delegateДелегат к получателю.
Обсуждение
По умолчанию поток является своим собственным делегатом и подклассами
NSInputStreamиNSOutputStreamдолжен поддержать настоящий договор. Если Вы переопределяете этот метод в подклассе, передаваяnilдолжен восстановить получатель как его собственного делегата. Делегаты не сохраняются.Для приобретения знаний о делегатах и делегации считайте «Делегацию» в Фундаментальном Руководстве по Какао.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
См. также
-
Открывает поток получения.
Объявление
Swift
func open()Objective C
- (void)openОбсуждение
Поток должен быть создан, прежде чем он сможет быть открыт. После того, как открытый, поток не может быть закрыт и вновь открыт.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
См. также
-
Закрывает получатель.
Объявление
Swift
func close()Objective C
- (void)closeОбсуждение
Закрытие потока завершает поток байтов и выпускает системные ресурсы, зарезервированные для потока, когда это было открыто. Если поток был запланирован на цикл выполнения, закрытие потока неявно удаляет поток из цикла выполнения. Закрывающийся поток может все еще быть запрошен для его свойств.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
См. также
-
Планирует получатель на данный выполненный цикл в данном режиме.
Объявление
Параметры
aRunLoopЦикл выполнения, на который можно запланировать получатель.
modeРежим для цикла выполнения.
Обсуждение
Если клиент не опрашивает поток, это ответственно за обеспечение, что поток планируется по крайней мере на один выполненный цикл и что выполняется по крайней мере один из циклов выполнения, на которые планируется поток.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
См. также
-
Удаляет получатель из данного выполненного цикла, работающего в данном режиме.
Объявление
Параметры
aRunLoopЦикл выполнения, на который был запланирован получатель.
modeРежим для цикла выполнения.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
См. также
-
Возвращает состояние получателя.
Объявление
Swift
var streamStatus: NSStreamStatus { get }Objective C
@property(readonly) NSStreamStatus streamStatusВозвращаемое значение
Состояние получателя.
Обсуждение
Посмотрите Константы для описания доступных констант NSStreamStatus.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
-
Возвраты
NSErrorобъект, представляющий потоковую ошибку.Объявление
Swift
@NSCopying var streamError: NSError? { get }Objective C
@property(readonly, copy) NSError *streamErrorВозвращаемое значение
NSErrorобъект, представляющий потоковую ошибку, илиnilесли не встретились ни с какой ошибкой.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
Типы данных
-
Тип, объявленный для констант, перечислен в Потоковых Константах Состояния.
Объявление
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Доступность
Доступный в iOS 2.0 и позже.
-
Эти константы указывают текущий статус потока. Они возвращаются
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Поток не открыт для чтения или записи. Это состояние возвращается перед базовым вызовом для открытия потока, но после того, как это было создано.
Доступный в iOS 2.0 и позже.
-
OpeningNSStreamStatusOpeningПоток находится в процессе того, чтобы быть открытым для чтения или для записи. Для сетевых потоков это состояние могло бы включать время после того, как поток был открыт, но в то время как происходит сетевое разрешение DNS.
Доступный в iOS 2.0 и позже.
-
OpenNSStreamStatusOpenПоток открыт, но не происходят никакое чтение или запись.
Доступный в iOS 2.0 и позже.
-
ReadingNSStreamStatusReadingДанные считываются из потока. Если код другого потока должен был вызвать, это состояние было бы возвращено
streamStatusна потоке, в то время как aread:maxLength:вызовите (NSInputStream) происходило.Доступный в iOS 2.0 и позже.
-
WritingNSStreamStatusWritingДанные пишутся в поток. Если код другого потока должен был вызвать, это состояние было бы возвращено
streamStatusна потоке, в то время как awrite:maxLength:вызовите (NSOutputStream) происходило.Доступный в iOS 2.0 и позже.
-
AtEndNSStreamStatusAtEndБольше нет данных для чтения, или больше данных не может быть записано в поток. Когда это состояние возвращается, поток находится в режиме «неблокирования», и никакие данные не доступны.
Доступный в iOS 2.0 и позже.
-
ClosedNSStreamStatusClosedПоток закрывается (
closeбыл вызван на нем).Доступный в iOS 2.0 и позже.
-
ErrorNSStreamStatusErrorС удаленным концом соединения нельзя связаться, или соединение было разъединено по некоторой другой причине.
Доступный в iOS 2.0 и позже.
-
-
Один или больше этих констант может быть отправлен делегату как немного поля во втором параметре 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Никакое событие не имело место.
Доступный в iOS 2.0 и позже.
-
OpenCompletedNSStreamEventOpenCompletedОткрытое завершилось успешно.
Доступный в iOS 2.0 и позже.
-
HasBytesAvailableNSStreamEventHasBytesAvailableПоток имеет байты, которые будут считаны.
Доступный в iOS 2.0 и позже.
-
HasSpaceAvailableNSStreamEventHasSpaceAvailableПоток может принять байты для записи.
Доступный в iOS 2.0 и позже.
-
ErrorOccurredNSStreamEventErrorOccurredОшибка произошла на потоке.
Доступный в iOS 2.0 и позже.
-
EndEncounteredNSStreamEventEndEncounteredКонец потока был достигнут.
Доступный в iOS 2.0 и позже.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
-
-
NSStreamопределяет эти строковые константы как ключи для доступа к потоковому использованию свойствpropertyForKey:и установка свойств сsetProperty:forKey::Объявление
Swift
let NSStreamSocketSecurityLevelKey: String let NSStreamSOCKSProxyConfigurationKey: String let NSStreamDataWrittenToMemoryStreamKey: String let NSStreamFileCurrentOffsetKey: String let NSStreamNetworkServiceType: StringObjective 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Уровень безопасности целевого потока. Посмотрите Уровень безопасности Уровня защищенных сокетов (SSL) для списка возможных значений.
Доступный в iOS 2.0 и позже.
-
NSStreamSOCKSProxyConfigurationKeyЗначение
NSDictionaryобъект, содержащий SOCKS, проксирует конфигурационную информацию.Словарь возвратился из платформы Конфигурации системы для прокси SOCKS, обычно достаточен.
Доступный в iOS 2.0 и позже.
-
NSStreamDataWrittenToMemoryStreamKeyЗначение
NSDataэкземпляр, содержащий данные, записанные в поток памяти.Используйте это свойство, когда Вам инстанцируют объекта потока вывода для сбора записанных данных в памяти. Значение этого свойства только для чтения.
Доступный в iOS 2.0 и позже.
-
NSStreamFileCurrentOffsetKeyЗначение
NSNumberобъект, содержащий текущее абсолютное смещение потока.Доступный в iOS 2.0 и позже.
-
NSStreamNetworkServiceTypeТип службы для потока. Обеспечение типа службы позволяет системе должным образом обрабатывать определенные атрибуты потока, включая поведение маршрутизации и приостановки. Большинство потоков не должно устанавливать это свойство. Посмотрите Потоковые Типы Службы для списка возможных значений.
Доступный в iOS 4.0 и позже.
-
-
NSStreamопределяет эти строковые константы для представления ошибочных доменов, которые могут быть возвращеныstreamError:Объявление
Objective C
NSString * const NSStreamSocketSSLErrorDomain ; NSString * const NSStreamSOCKSErrorDomain ;Константы
-
NSStreamопределяет эти строковые константы для указания уровня безопасности уровня защищенных сокетов (SSL).Объявление
Swift
let NSStreamSocketSecurityLevelNone: String let NSStreamSocketSecurityLevelSSLv2: String let NSStreamSocketSecurityLevelSSLv3: String let NSStreamSocketSecurityLevelTLSv1: String let NSStreamSocketSecurityLevelNegotiatedSSL: StringObjective C
NSString * const NSStreamSocketSecurityLevelNone; NSString * const NSStreamSocketSecurityLevelSSLv2; NSString * const NSStreamSocketSecurityLevelSSLv3; NSString * const NSStreamSocketSecurityLevelTLSv1; NSString * const NSStreamSocketSecurityLevelNegotiatedSSLКонстанты
-
NSStreamSocketSecurityLevelNoneУказывает, что никакой уровень безопасности не установлен для потока сокета.
Доступный в iOS 2.0 и позже.
-
NSStreamSocketSecurityLevelSSLv2Указывает что версия SSL, которая будет установлена как протокол системы защиты для потока сокета.
Доступный в iOS 2.0 и позже.
-
NSStreamSocketSecurityLevelSSLv3Указывает, что версия 3 SSL установлена как протокол системы защиты для потока сокета.
Доступный в iOS 2.0 и позже.
-
NSStreamSocketSecurityLevelTLSv1Указывает, что версия 1 TLS установлена как протокол системы защиты для потока сокета.
Доступный в iOS 2.0 и позже.
-
NSStreamSocketSecurityLevelNegotiatedSSLУказывает, что протокол системы защиты высшего уровня, который может быть согласован быть установленным как протокол системы защиты для потока сокета.
Доступный в iOS 2.0 и позже.
Обсуждение
Вы получаете доступ и устанавливаете эти значения с помощью
NSStreamSocketSecurityLevelKeyключ свойства. -
-
NSStreamопределяет эти строковые константы для использования в качестве ключей для указания значений конфигурации прокси SOCKS вNSDictionaryобъект.Объявление
Swift
let NSStreamSOCKSProxyHostKey: String let NSStreamSOCKSProxyPortKey: String let NSStreamSOCKSProxyVersionKey: String let NSStreamSOCKSProxyUserKey: String let NSStreamSOCKSProxyPasswordKey: String let NSStreamSOCKSProxyVersion4: String let NSStreamSOCKSProxyVersion5: StringObjective C
NSString * const NSStreamSOCKSProxyHostKey; NSString * const NSStreamSOCKSProxyPortKey; NSString * const NSStreamSOCKSProxyVersionKey; NSString * const NSStreamSOCKSProxyUserKey; NSString * const NSStreamSOCKSProxyPasswordKey; NSString * const NSStreamSOCKSProxyVersion4; NSString * const NSStreamSOCKSProxyVersion5Константы
-
NSStreamSOCKSProxyHostKeyЗначение
NSStringобъект, представляющий прокси-сервер SOCKS.Доступный в iOS 2.0 и позже.
-
NSStreamSOCKSProxyPortKeyЗначение
NSNumberобъект, содержащий целое число, представляющее порт, на котором слушает прокси.Доступный в iOS 2.0 и позже.
-
NSStreamSOCKSProxyVersionKeyЗначение также
NSStreamSOCKSProxyVersion4илиNSStreamSOCKSProxyVersion5.Если этот ключ не присутствует,
NSStreamSOCKSProxyVersion5используется по умолчанию.Доступный в iOS 2.0 и позже.
-
NSStreamSOCKSProxyUserKeyЗначение
NSStringобъект, содержащий имя пользователя.Доступный в iOS 2.0 и позже.
-
NSStreamSOCKSProxyPasswordKeyЗначение
NSStringобъект, содержащий пароль пользователя.Доступный в iOS 2.0 и позже.
-
NSStreamSOCKSProxyVersion4Возможное значение для
NSStreamSOCKSProxyVersionKey.Доступный в iOS 2.0 и позже.
-
NSStreamSOCKSProxyVersion5Возможное значение для
NSStreamSOCKSProxyVersionKey.Доступный в iOS 2.0 и позже.
Обсуждение
Вы устанавливаете объект словаря как текущую конфигурацию прокси SOCKS с помощью
NSStreamSOCKSProxyConfigurationKeyключ -
-
NSStreamопределяет эти строковые константы для указания типа службы потока.Объявление
Swift
let NSStreamNetworkServiceTypeVoIP: String let NSStreamNetworkServiceTypeVideo: String let NSStreamNetworkServiceTypeBackground: String let NSStreamNetworkServiceTypeVoice: StringObjective C
NSString * const NSStreamNetworkServiceTypeVoIP NSString * const NSStreamNetworkServiceTypeVideo NSString * const NSStreamNetworkServiceTypeBackground NSString * const NSStreamNetworkServiceTypeVoiceКонстанты
-
NSStreamNetworkServiceTypeVoIPУказывает, что поток предоставляет услугу VoIP.
Доступный в iOS 4.0 и позже.
-
NSStreamNetworkServiceTypeVideoУказывает, что поток предоставляет видео услугу.
Доступный в iOS 5.0 и позже.
-
NSStreamNetworkServiceTypeBackgroundУказывает, что поток предоставляет фоновую услугу.
Доступный в iOS 5.0 и позже.
-
NSStreamNetworkServiceTypeVoiceУказывает, что поток обеспечивает услугу передачи речи.
Доступный в iOS 5.0 и позже.
-
