Как я могу назвать непубличные функции iOS и получить доступ к непубличным объектам из Swift? В частности, я хотел бы использовать один непубличный класс в рамках QuartzCore.Как получить доступ к частным API-интерфейсам iOS в Swift?
Одним из решений, которые пришли мне на ум, является создание «мостикового» проекта Objective-C, который объединит эти непубличные API-интерфейсы в публичные и вызовет эти функции Objective-C из Swift. Тем не менее, теперь мое решение является чистым Swift, и я бы предпочел сохранить его таким образом. Есть ли еще более простой путь? (например, добавление чего-то к Objective-C bridging header file)
Примечание: Я знаю, что вы думаете, частные API-интерфейсы являются частными, потому что они не должны использоваться. Я знаю риски, я знаю обо всех donwsides, ограничениях в магазине приложений и т. Д. После всего, что тщательно рассмотрено и много исследований, это, к сожалению, по-прежнему кажется лучшим способом в этом конкретном случае.
Если добавить правильно декларацию частных методов мостиковым заголовка файл, как если бы они были в категории (называемой, скажем, 'PrivateButImmaUseTheseAnyway'), работает ли это? –
@ TheParamagneticCroissant Я не уверен, что понимаю, что вы имеете в виду. Я не знал, можно ли объявить только метод, соединяющий заголовочный файл. Я попытался объявить весь закрытый класс - у меня возникла ошибка компиляции, говоря, что класс не существует, но, возможно, я не сделал это правильно. – drasto
Я имею в виду, что вы объявляете частный класс вместе с категорией, например: '@interface NSPrivateClass (PrivateStuff)', и добавьте там объявление частных методов. –