Я не могу подтвердить, что это дословный ответ (не фанат CocoaPods, поэтому мне немного не хватает всех его возможностей), но я вполне уверен в том, что я должен поделиться.
Это звучит очень похоже на концепцию желания иметь возможность тестировать частные свойства и функции в Swift. Простой ответ на это, что вы не можете. То, что является частным для модуля Swift, является строго частным, и поскольку модульные тесты являются отдельным модулем, они не могут получить доступ к чему-то менее разрешающему, чем символы, помеченные как public
, без импорта тестируемого модуля с атрибутом @testable
(который обеспечивает только доступ к internal
символы уровня на самом низком уровне.
Менее простой ответ на этот вопрос заключается в том, что вы затем протестируете эти приватные методы с помощью символов, к которым вы МОЖЕТЕ получить доступ (или пожертвуете приватным уровнем ради тестирования), и подтверждая, что доступные символы работают правильно, вы можете смело предполагать, что частные символы поддерживают их адекватно.
Не зная больше о вашем проекте, я не могу сказать, полезен ли вам этот последний кусочек или нет вообще.
Звучит так, как будто вы понимаете, что области конфиденциальности в Objective C на самом деле не соблюдаются настолько, насколько вежливо запрашивает , чтобы вы их не трогали, в конечном итоге ничего не делая, чтобы вас остановить от этого.
...
Может быть, этот подход будет работать для вас (я не могу ни подтвердить, ни опровергнуть, если это будет наилучшей практикой, но я думаю, что это будет работать):
Создайте модуль с именем MyFramework-Private
, в котором есть все, что вы хотите скрыть от пользователя, но со всеми общими методами и свойствами на уровне public
. Импортируйте это в любой модуль, который, в конечном итоге, вы хотите видеть пользователем, но не включайте его в инструкции для разработчика. Это не остановит пользователя от доступа к этому модулю, но даст понять, что он не поддерживается и не рекомендуется. Таким образом, MyFramework-Database
будет импортировать MyFramework-Private
, но пользователь будет импортировать только MyFramework-Database
и подвергаться воздействию только тех публикаций c (или открытых), которые имеются в части Database .