Objective-C中类似于Swift的canImport的方法是什么?

14

Swift 4.2有一个特殊的条件canImport帮助开发人员检查一个模块是否可以被导入到项目中。这个条件在Swift 4.1中引入。

现在我正在编写使用Objective-C编写的iOS项目。我使用模块,每个目标对应不同的模块。这就是为什么我想要使用类似如下的内容:

#if canImport(SomeModule)
@import SomeModule;
#endif

我该如何解决这个问题?现在我为每个目标使用不同的“其他C标志”,但我希望找到更加灵活的解决方案。

1个回答

17

这个回答有点晚了,但我在处理类似情况时遇到了这个问题。

我使用了 __has_include(<SomeModule/SomeModule.h>)

导入你的框架:

#if __has_include(<SomeModule/SomeModule.h>)
#import <SomeModule/SomeModule.h>
#define __HAS_SOME_MODULE_FRAMEWORK__
#endif

在您的代码中稍后:

- (void)doSomething {
    #ifdef __HAS_SOME_MODULE_FRAMEWORK__
    // with  SomeModule framework
    #else
    // without  SomeModule framework
    #endif
}

1
我正在弱链接第三方SDK,因为它不支持arm64模拟器,但即使在这种情况下也会返回true。我已经从框架搜索路径中省略了SDK路径,并且也没有进行链接,但由于某种原因__has_include仍然返回true。 - Dávid Pásztor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接