我在一个应用和它的动作扩展之间共享框架。该框架使用的 API 对于扩展程序不可用。
我的问题是:如果我保留了对诸如 UIApplication.sharedApplication
等 API 的引用而没有实际调用它们(将“仅要求应用程序扩展安全 API”设置为 NO),那么应用程序是否会被拒绝,还是我需要完全从代码中删除任何引用(即使用 #ifdef
)?
如果您有包含此类API的自定义框架,则可以从包含应用程序链接到它,但无法与应用程序的扩展共享该代码。应用商店拒绝链接到这些框架或以其他方式使用不可用API的任何应用程序扩展。
iOS 9更新:苹果正在删除特定目标的无效框架访问权限,因此您将无法引用不可用的API,必须按照已接受的答案进行操作。
-- 原回答 --
如果不是非常麻烦,最好使用#ifdef
绕过参考。如果在未来苹果决定打破编译以使您的扩展引用受限制的API(就像尝试获取设备UUID一样)时,它将使您的代码更具前向兼容性。
此外,这将使您的框架在其他场景中可用,例如在OS X上没有UIKit访问权限的情况下。