这个问题纯粹是基于公开发布的关于在iOS中引入应用程序扩展的文档.
随着iOS 8中引入了app extensions,现在可以“扩展您的应用程序的自定义功能和内容,并在用户使用其他应用程序时将其提供给用户”.
在我的扩展程序的实现中,我在我的扩展名(模型等)中包含了我的实际应用程序中的一些类.问题是这些类调用UIApplication,这在应用程序扩展中是不可用的,编译器告诉我.
我认为一个简单的解决方案将包含任何调用UIApplication在#if指令.
例如,如果我只想包括代码,如果我在一个模拟器上运行,我会使用:
#if TARGET_IPHONE_SIMULATOR // Code Here #endif
当目标是应用程序扩展名时,是否有类似的定义的宏?
解决方法
您可以定义自己的宏.
在项目设置中,使用顶栏中的下拉列表来选择扩展目标:
然后:
- Click
Build Settings
- Find (or search)
Preprocessor Macros
underApple LLVM 6.0 - Preprocessing
- Add
TARGET_IS_EXTENSION
or any other name of your choice in both the debug and release sections.
然后在你的代码中:
#ifndef TARGET_IS_EXTENSION // Do your calls to UIApplication #endif