Похоже, что Apple рекомендует использовать циклы выполнения для передачи данных с внешним аксессуаром. Однако, если я что-то не упустил, циклы выполнения не очень подходят для определенных типов связи.
У нас есть -экспериментальный-аксессуар, которому нам нужно отправить произвольное количество байтов (скажем, до 1024), за которым следует аксессуар, обрабатывающий эти данные (переменная задержка, скажем, от 1 мс до 1000 мс), за которым следует Ответ переменной длины (до 1024 байт) от аксессуара.
Мы хотели бы разработать статическую библиотеку (фреймворк) для связи с аксессуаром. По сути, эта библиотека будет иметь функцию, которая принимает NSArray или NSMutableArray в качестве входных данных и возвращает NSArray или NSMutableArray, содержащие ответ.
Проблема в том, что рекомендуемая стратегия циклов выполнения не очень подходит для этого типа приложений. В статической библиотечной функции после подготовки данных для передачи и планирования передачи мы должны войти в своего рода состояние «ожидания». Однако это состояние ожидания не может быть основано на методе опроса (например, ожидание синхронизированной переменной, которая будет установлена маршрутизацией приема), поскольку в этом случае подпрограмма приема никогда не будет выполняться (поскольку они находятся в одном потоке). .
Если мы не используем циклы выполнения, мы не можем знать, когда считывать данные, потому что мы не знаем, когда данные поступят.
Любые идеи или рекомендации о том, как подойти к этой проблеме? Есть ли примеры?