相关疑难解决方法(0)

什么是预处理器宏来测试是否正在构建应用程序扩展?

此问题完全基于有关在iOS中引入应用程序扩展的公开发布的文档.

随着iOS 8中的应用扩展程序的推出,现在可以"扩展您的应用程序之外的自定义功能和内容,并在用户使用其他应用程序时将其提供给用户".

在我的扩展实现中,我在我的扩展(模型等)中包含了我的实际应用程序中的一些类.问题是这些类进行调用UIApplication,这在app扩展中是不可用的,编译器告诉我.

我认为一个简单的解决方案就是UIApplication#if指令中包含任何调用.

例如,如果我想在模拟器上运行时只包含代码,我会使用:

#if TARGET_IPHONE_SIMULATOR
    // Code Here
#endif
Run Code Online (Sandbox Code Playgroud)

当目标是应用程序扩展时,是否有类似的定义宏?

preprocessor ios ios8 ios-app-extension

16
推荐指数
1
解决办法
5620
查看次数

有没有办法为“UIApplication.shared”添加“if (iOSApplicationExtension)”条件

我试图找到一种方法来添加检查条件 框架中的扩展目标(不是主应用程序)。是否可以依靠 #available(iOSApplicationExtension, *)一些参数调整?

@objc public extension UIView {
    var isAccessibilityCategory: Bool {
        if #available(iOSApplicationExtension, *) {
            return self.traitCollection.preferredContentSizeCategory.isAccessibilityCategory
        } else {
            return UIApplication.shared.preferredContentSizeCategory.isAccessibilityCategory
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何检测代码是否在主应用程序或应用程序扩展目标中运行?- 不起作用,因为框架不知道扩展目标

ios swift ios-extensions

6
推荐指数
1
解决办法
750
查看次数

可以检测我的框架是作为主应用程序还是扩展程序的一部分运行?

在包含其应用程序和应用程序扩展的公共代码的iOS或OS X Framework中,有没有办法检测代码是在主应用程序或其扩展程序之一下运行?具体来说,我想检测框架是否被用作WatchKit扩展的一部分而不是App的iPhone部分.

UIDevice.currentDevice总是返回iPhone,就像运行代码一样.我相信我可以检查是否WKInterfaceDevice存在,但这似乎并不太优雅.

iphone frameworks objective-c ios watchkit

5
推荐指数
1
解决办法
672
查看次数

iOS-Today扩展程序中没有sharedApplication?

我正在创建Today扩展。我已经添加了所有必要的文件,并得到了一堆有关的编译错误

  • openUrl不可用
  • sharedApplication不可用
  • UIAlertView上的init不可用

具有这些依赖关系的文件已内置到我的应用程序中(我的网络层等上的错误处理程序),我知道它们不会在Today Extension中使用,但是为了完全摆脱这些文件中的依赖关系,需要重构整个应用程序。有没有解决的办法?

我的代码是Swift,所以我也不能使用编译器宏来避免执行这些代码行。

#if!TARGET_IS_TODAY_EXTENSION #endif

ios swift today-extension ios-extensions

4
推荐指数
1
解决办法
1032
查看次数