Swift 在 Objective-C 中的 canImport 模拟
Swift's canImport analogue in Objective-C
Swift 4.2有一个特殊的条件canImport
可以帮助开发者检查一个模块是否可以在项目中导入。它是在 Swift 4.1.
中引入的
现在我正在研究用 Objective-C 编写的 iOS 项目。我使用模块,对于每个目标,这些模块都是不同的。这就是为什么我想使用类似的东西:
#if canImport(SomeModule)
@import SomeModule;
#endif
我该如何解决这个问题?现在我对每个目标使用不同的"Other C Flags",但我想找到更灵活的解决方案。
这个回答有点晚了,但我在处理类似案例时遇到了这个问题。
我用了 __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
}
Swift 4.2有一个特殊的条件canImport
可以帮助开发者检查一个模块是否可以在项目中导入。它是在 Swift 4.1.
现在我正在研究用 Objective-C 编写的 iOS 项目。我使用模块,对于每个目标,这些模块都是不同的。这就是为什么我想使用类似的东西:
#if canImport(SomeModule)
@import SomeModule;
#endif
我该如何解决这个问题?现在我对每个目标使用不同的"Other C Flags",但我想找到更灵活的解决方案。
这个回答有点晚了,但我在处理类似案例时遇到了这个问题。
我用了 __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
}