Мое приложение имеет несколько шейдеров Core Image, написанных на языке Core Image Shader.Я загружаю их как CIColorKernel(source: <kernel string here>)
.Я только что изменил цель развертывания моего приложения с iOS 11.0 до 12.0.Теперь я получаю следующие предупреждения:
'init(source:)' was deprecated in iOS 12.0: Core Image Kernel Language API deprecated. (Define CI_SILENCE_GL_DEPRECATION to silence these warnings)
Поскольку наше приложение построено с предупреждениями, относящимися к ошибкам, я должен скрыть или исправить это предупреждение.
Я мог бы переписать шейдеры в металлическом шейдереязык, поэтому я могу использовать CIColorKernel(functionName: <name>, fromMetalLibraryData: <data>)
, однако Metal не поддерживается в симуляторе.Поэтому, если я это сделаю, мы не сможем получить скриншоты всех необходимых нам устройств с симулятора.Я мог переписать шейдеры в металле и загружать только металлические при работе на устройстве, возвращаясь к текущим на симуляторе.Однако это не кажется идеальным, поскольку у нас есть 2 набора функций для поддержки.Это также требует, чтобы я как-то скрыл предупреждение об устаревании.
Итак, есть ли какие-либо предложения о неосмотрительном способе написания шейдеров, которые вы можете запустить в симуляторе?Если нет, я могу просто попытаться заставить замолчать предупреждения до iOS 13 и надеяться, что сим получит лучшую поддержку.Я не могу понять, как Define CI_SILENCE_GL_DEPRECATION to silence these warnings
.Я попытался добавить CI_SILENCE_GL_DEPRECATION
параметр сборки.
Обновление Так как это был конец года, я использовал один из наших двух билетов DTS, чтобы спросить Apple, как заставить его замолчать.Их ответом было использование #pragma GCC diagnostic ignored "-Wdeprecated-declarations”
в файле Objective-C для отключения всех устаревших предупреждений или сообщение об ошибке из-за невозможности заставить замолчать это предупреждение.:( Думаю, на данный момент мне просто нужно оставить цель развертывания этой платформы на iOS 11, и надеюсь, что мне не нужно обновляться до 12 для некоторой будущей функции / ошибки. Цель развертывания основного приложения все еще может быть 12хотя пока что это не повлияет на пользователей.