Я разрабатываю статическую библиотеку, которая распространяется среди других разработчиков. Я хочу использовать класс CocoaLumberjack (DDLog), если он доступен в финальном двоичном файле. В статической библиотеке я определяю интерфейс класса и проверяю [DDLog class]
, чтобы узнать, существует ли он. Но в хост-приложении, если CocoaLumberjack нет, компоновщик жалуется, потому что DDLog не существует.Избегайте ссылки на символы в статической библиотеке
Я знаю, что я могу отложить проверку символов во время выполнения в конфигурации приложения, но есть ли способ предотвратить компиляцию статической библиотеки от ссылки на класс DDLog в скомпилированных объектах?
Я могу обойти это, используя вместо этого NSInvocation. Но есть ли лучший способ? – Nick
Любая ссылка должна быть разрешена компоновщиком для запуска приложения. Но вы можете использовать слабое соединение: https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html. Слабая связь подходит вашей проблеме? – user996142
@ user996142 Я пробовал слабое соединение, см. Мой новый ответ. – Nick