Проверьте членство в классе перед вызовом функции - PullRequest
0 голосов
/ 21 мая 2018

У меня есть класс UserAccountManager, который должен быть доступен из двух целей: основного приложения iOS и расширения соответственно.Во время инициализации этот класс будет обращаться к отдельной платформе, которая из-за своей зависимости от AppDelegate доступна только из основного приложения iOS.К сожалению, это не компилируется, так как эта структура не доступна в расширении.

Как я могу проверить целевое членство в этой платформе и сделать звонок, только если он доступен?

1 Ответ

0 голосов
/ 21 мая 2018

Вы можете использовать условную компиляцию.

Добавьте -DHAS_APP_DELEGATE (или как бы вы хотели это называть) в настройку сборки "Другие флаги C" для цели, у которой есть AppDelegate.

Затем вы можете условно скомпилировать ваш код ObjC.

#ifdef HAS_APP_DELEGATE
    // Call to framework that depends on AppDelegate
#else
    // Do something else instead
#endif

Вы можете игнорировать ветвь else, если вы просто хотите пропустить вызов к фреймворку.Вы также можете использовать #ifdef при импорте, чтобы импортировать каркас только тогда, когда его можно использовать.

Вот вопрос, который может содержать и другие подходы: Условная проверка компиляции для каркаса перед импортом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...