Я не нашел достойной документации, объясняющей процесс многопоточности для NSStream. Чтобы быть конкретным, давайте перейдем к NSInputStream. Потоки в Objective -C для меня в настоящее время остаются загадкой просто потому, что они кажутся такими простыми.
Мой вопрос относится в первую очередь к этой строке:
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
Вы можете указать цикл выполнения, в котором будет выполняться входной поток, что мне показалось довольно крутым. Дело в том, что если я хочу, чтобы входной и выходной потоки выполнялись в своих собственных потоках, и оба были созданы в одном классе, скажем Connection, то как заставить их работать в своих собственных потоках?
Причина, по которой я спрашиваю, связана с делегатами. Раньше мы бы сделали [inputStream setDelegate:self]
, что означает, что мы должны объявить stream:handleEvent
для обработки входящих/исходящих данных.
Итак, в конечном счете, мой вопрос: если у вас есть один класс, который устанавливает поток ввода и вывода, как вы оба связываете каждый поток и делегируете ответственность за обработку событий потока текущему классу?
Вот код, который можно пожевать:
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
Я думаю о следующем:
Любые идеи?