Do the stream classes in Cocoa support seeking?

2019-02-26 10:03发布

问题:

I need a Cocoa class that can read and write from a memory stream and that supports seeking. In C#, MemoryStream supports the method seek, and in Java, ByteArrayInputStream supports the methods mark, skip, and reset.

In iOS development, what are the equivalent class and method?

I need the above functionality for my project, and if it is by default not supported by the iOS frameworks, what would be the best way of going about implementing my own? E.g. write my own stream subclass inheriting from NSInputStream/NSOutputStream which will internally contain custom code?

回答1:

An arbitrary NSInputStream and NSOutputStream don't appear to support random offset seeking, and creating subclasses of them is notoriously difficult.

If you're going to be doing this reading and writing to a local file on disk (which I think you'd have to be, since I'm not sure how you could seek to a random offset on a network connection...), then what you're probably looking for is NSFileHandle.