Я успешно использую MTAudioProcessingTap в Swift на MacOS, чтобы управлять моей аудио-маршрутизацией как для живого воспроизведения, так и для экспорта. Однако конкретная маршрутизация, которая должна происходить во время выполнения, зависит от выбора пользователя. То, что я хотел бы сделать, это передать пару Ints в MTAudioProcessingTapProcessCallback при создании касания, чтобы я мог использовать одно определение обратного вызова, которое может использовать эти Ints для определения способа маршрутизации. Проблема в том, что обратный вызов - это указатель на функцию C, который не может захватить контекст.
Я подумал, что, возможно, я мог бы использовать параметр clientInfo в MTAudioProcessingTapCallbacks для хранения необходимых мне значений, но я не могу найти никакой документации о том, как я могу получить доступ к этому параметру из MTAudioProcessingTapProcessCallback.
У меня есть 32 возможных комбинации маршрутизации, и, к сожалению, единственная другая опция, которую я вижу на этом этапе, - это объявление 32 отдельных MTAudioProcessingTapProcessCallbacks, а затем выбор того, который использовать при создании касания. Но мне было бы намного проще, если бы у меня был только один MTAudioProcessingTapProcessCallback, который принимает простое решение на основе переданных данных.