Overview
概要
This class’s interface is common to all Cocoa stream classes, including its concrete subclasses InputStream
and OutputStream
.
Stream
objects provide an easy way to read and write data to and from a variety of media in a device-independent way. You can create stream objects for data located in memory, in a file, or on a network (using sockets), and you can use stream objects without loading all of the data into memory at once.
Stream
オブジェクトは、多様なメディアへとそしてそれから読み出すおよび書き出す簡単な方法をデバイスから独立した方法で提供します。あなたはストリームオブジェクトの作成が、メモリ中に、ファイル中に、または(ソケットを使って)ネットワーク上に位置するデータに対して可能です、そしてあなたはストリームオブジェクトの使用が、一度にデータの全てをメモリへとロードすることなしに可能です。
By default, Stream
instances that aren’t file-based are non-seekable, one-way streams (although custom seekable subclasses are possible). After you provide or consume data, you can’t retrieve the data from the stream.
Subclassing Notes
サブクラス作成の注意
Stream
is an abstract class, incapable of instantiation and intended for you to subclass it. It publishes a programmatic interface that all subclasses must adopt and provide implementations for.
それはあるプログラムインターフェイスを公開します、それは全てのサブクラスが採用してそれに対して実装を提供しなければならないものです。
The two Apple-provided concrete subclasses of Stream
, InputStream
and OutputStream
, are suitable for most purposes. However, there might be situations when you want a peer subclass to InputStream
and OutputStream
. For example, you might want a class that implements a full-duplex (two-way) stream, or a class whose instances are capable of seeking through a stream.
例えば、あなたは全二重(2方向)ストリームを実装するクラスを、またはそれのインスタンスがストリームを端から端までシークする能力があるクラスを望むかもしれません。
Methods to Override
メソッドのオーバーライド
All subclasses must fully implement the following methods:
全てのサブクラスは、完全に以下のメソッドを実装しなければなりません:
-
open()
and close()
open()
とclose()
Implement open()
to open the stream for reading or writing and make the stream available to the client directly or, if the stream object is scheduled on a run loop, to the delegate. Implement close()
to close the stream and remove the stream object from the run loop, if necessary. A closed stream should still be able to accept new properties and report its current properties.
open()
を実装してストリームを読み出しまたは書き出しのために開いてください、そしてそのストリームをクライアントに直接にまたは、もしストリームオブジェクトが実行ループ上で予定されるならば、委任先に利用可能にしてください。close()
を実装してストリームを閉じてください、そしてストリームオブジェクトを実行ループから取り除いてください、必要であれば。閉じられたストリームは、依然として新しいプロパティを受け入れ、そしてそれの現在のプロパティを報告可能であるべきです。
Once you close a stream, you can’t reopen it.
-
delegate
Return and set the delegate. By a default, a stream object must be its own delegate; so a delegate
message with an argument of nil
should restore this delegate.
委任先を返します、および設定します。初期状態では、ストリームオブジェクトはそれ自身が委任先であるはずです;なのでdelegate
メッセージでnil
の引数を持つものは、それを委任先として復元すべきです。
Don’t retain the delegate to prevent retain cycles.
To learn about delegates and delegation, read "Delegation" in Cocoa Fundamentals Guide.
委任先と委任について学ぶために、"Delegation" をCocoa Fundamentals Guideで見てください。
-
schedule(in:forMode:)
and remove(from:forMode:)
schedule(in:forMode:)
とremove(from:forMode:)
Implement schedule(in:forMode:)
to schedule the stream object on the specified run loop for the specified mode. Implement remove(from:forMode:)
to remove the object from the run loop. See the documentation of the RunLoop
class for details. Once the stream object for an open stream is scheduled on a run loop, it is the responsibility of the subclass as it processes stream data to send stream(_:handle:)
messages to its delegate.
schedule(in:forMode:)
を実装することで、ストリームオブジェクトをこの指定された実行ループ上でこの指定されたモードに対して予定してください。remove(from:forMode:)
を実装して、そのオブジェクトを実行ループから取り除いてください。RunLoop
クラスの文書化を詳細として見てください。一旦ストリームオブジェクトがある開かれたストリームに対してある実行ループ上で予定されるならば、サブクラスは、それがストリームデータを処理するときにstream(_:handle:)
メッセージをそれの委任先に送る責任があります。
-
property(forKey:)
and setProperty(_:forKey:)
property(forKey:)
とsetProperty(_:forKey:)
Implement these methods to return and set, respectively, the property value for the specified key.
これらメソッドを実装することで、指定されたキーに対するプロパティ値をそれぞれ返したり設定したりしてください。
You may add custom properties, but be sure to handle all properties defined by Stream
as well.
-
streamStatus
and streamError
streamStatus
とstreamError
Implement streamStatus
to return the current status of the stream as a Stream.Status
constant; you may define new Stream.Status
constants, but be sure to handle the system defined constants properly. Implement streamError
to return an NSError
object representing the current error. You might decide to return a custom NSError
object that can provide complete and localized information about the error.