考虑到需要在某些类中导入框架,如何在 iOS 项目的特定目标中使用框架?

Posted

技术标签:

【中文标题】考虑到需要在某些类中导入框架,如何在 iOS 项目的特定目标中使用框架?【英文标题】:How to use a framework just in a specific target in the iOS project by considering the need to import it in some classes? 【发布时间】:2020-04-27 08:38:32 【问题描述】:

我有一个包含多个目标的项目,其中一个目标使用特殊框架。框架是用 Objective-C 编写的,我的项目是用 Swift 编写的。

所以我需要一个定义框架的桥接头文件。现在我使用公用 Bridging-header 文件,但我不想在其他目标上使用该框架。

我尝试为每个目标单独使用 Bridging-header 文件,但遇到编译错误,即在导入它的类文件中找不到框架!

- TL;DR

我的问题是:如何在具有多个目标的 Swift 项目中添加一个 Objective-C 框架,同时考虑到它应该在一个目标以及桥接头文件中使用? p>

【问题讨论】:

【参考方案1】:

几天后,我可以设法解决它。

1) 在 BridgingHeader.h 文件中添加自定义标志 (MY OPTIONS) 以及 #ifdef#endif。如下图:

2) 选择 Target(specific) -> Build Settings -> Preprocessor Macros 然后添加

MY_OPTIONS=1

3) 选择 Target(specific) -> Build Settings -> Swift Compiler - Custom Flags -> Other Swift Flags 然后添加

-DMY_OPTIONS

4) 在你的类上添加这一行以防止在编译其他目标时出现编译错误

  #if MY_OPTIONS
      let specificVC = SpecificViewController()
      self.present(specificVC, animated: true, completion: nil)
  #endif

【讨论】:

以上是关于考虑到需要在某些类中导入框架,如何在 iOS 项目的特定目标中使用框架?的主要内容,如果未能解决你的问题,请参考以下文章

无法在框架项目的 Objective-C 代码中导入 Swift 类

在 Swift 框架中导入 CommonCrypto

如何在 Swift 项目中导入 Zbar 框架

如何在 Swift 项目中导入 Zbar 框架

Prefix Header 在另一个项目中导入

如何在vue.js项目的main.js文件中导入js类并在所有组件中使用它而不是在每个组件中导入?