【发布时间】:2014-08-27 11:57:04
【问题描述】:
我有一个适用于 iOS 8 的 Swift 应用程序,它有一个应用程序组件、一个扩展组件和一个包含大量共享资源的框架 - 共享视图控制器、共享资产等。在框架中的某个位置,我想要打电话
UIApplication.sharedApplication().openURL(someURL)
但是,如果我在选中“仅允许应用扩展 API”时这样做,则会出错,因为 UIApplication.sharedApplication() 在扩展中不可用。如果我取消选中该框,我会收到一条警告,指出在扩展中包含框架可能不安全,我担心在提交时间方面可能会导致拒绝。
如果此代码仅用于扩展,我会使用类似的代码:
extensionContext.openURL(someURL, completionHandler: nil)
…但这不适用于独立应用程序,只能在扩展程序中使用。
修改我的代码以确保扩展程序永远不会调用 UIApplication.sharedApplication().openURL() 行,并且应用程序永远不会调用 extensionContext.openURL() 行,但这并不重要清除错误 - 只是扩展 API 框架中存在 UIApplication.sharedApplication() 会导致错误。
那么,在我开始研究 hack 之前,是否有一个干净的解决方案可以让我调用 openURL 并采取正确的操作,而不会导致编译错误?
提前致谢!
【问题讨论】: