Yes, read:maxLength:
blocks until after at least one byte is available, or if an error occurred or if the stream reached EOS. It will also block until after the stream is opened.
Whether you want to poll or if you are fine with blocking or if you want to implement the stream delegates is up to you. It is recommended to use the stream delegates.