iOS - SharedApplication 在 Today Extension 中不可用?
Posted
技术标签:
【中文标题】iOS - SharedApplication 在 Today Extension 中不可用?【英文标题】:iOS - sharedApplication is unavailable in Today Extension? 【发布时间】:2015-03-25 02:55:44 【问题描述】:我正在创建一个 Today 扩展。我已经添加了所有必要的文件并得到了一堆关于
的编译错误 openUrl 不可用 sharedApplication 不可用 UIAlertView 上的初始化不可用具有这些依赖关系的文件深入我的应用程序(我的网络层上的错误处理程序等),我知道它们不会在 Today Extension 中使用,但为了完全摆脱依赖关系这些文件我需要重构整个应用程序。有没有办法解决这个问题?
我的代码是 Swift,所以我也不能使用编译器宏来避免执行这些代码行。
#if !TARGET_IS_TODAY_EXTENSION #endif
【问题讨论】:
【参考方案1】:您可以使用编译器宏,但它不如使用 Objective-C 灵活(而且 IMO 设计稍有错误)。如果您将 -DTODAY_EXTENSION
之类的内容添加到今天扩展的构建设置的“其他 Swift 标志”部分,您可以在代码中执行以下操作:
#if TODAY_EXTENSION
println("In today extension")
#else
println("Not in today ext")
#endif
它只是工作。然而:
编译器似乎忽略了带有值的宏,所以如果你使用像-DTODAY_EXTENSION=1
这样的东西,它不会有任何效果。删除值并使其成为-DTODAY_EXTENSION
#if
在检查宏时有效,但 #ifdef
无效。
Apple 有 some documentation on this,但我仍然需要进行试验才能使其正常工作。
【讨论】:
【参考方案2】:如果使用.shared
的代码在框架中(即cocoapod),则不能使用编译器宏。这里有一种方法应该可行:ios 8 Extension How To Detect Running
【讨论】:
以上是关于iOS - SharedApplication 在 Today Extension 中不可用?的主要内容,如果未能解决你的问题,请参考以下文章
iOS UIApplication sharedapplication用法
来自 Firebase pod 的 FBSDKCoreKit/FBSDKLoginKit?:“sharedApplication”不可用:在 iOS 上不可用(应用程序扩展)
iOS 8 [UIApplication sharedApplication].scheduledLocalNotifications 为空
我需要在 iOS 的班级中声明 UIApplication SharedApplication 多少次?