我在app和它的动作扩展之间共享一个框架。该框架使用扩展无法使用的API。
我的问题是:如果我保留对UIApplication.sharedApplication
之类的API的引用而不实际调用它们(将“仅需要App-Extension-Safe API”设置为NO),那么应用程序是否会被拒绝,或者我需要从代码中完全删除任何引用(即使用#ifdef
)?
答案 0 :(得分:3)
是的,即使它引用了受限制的API,也会被拒绝。我们正在通过相同的过程在我们的框架中删除此类调用,或者您可以为您的框架设置两个目标,一个是扩展安全的,另一个不是#ifdef警卫。
如果您有一个包含此类API的自定义框架,则可以 从您的应用程序安全链接到它但无法共享该代码 使用应用程序包含的扩展名。 App Store 拒绝任何应用 链接到此类框架的扩展程序或以其他方式使用的扩展程序 不可用的API。"
答案 1 :(得分:-3)
iOS 9更新:Apple正在删除针对特定目标的无效框架的访问权限,因此无论如何都无法引用不可用的API,并且必须遵循接受的答案的状态。
- 原始答案 -
如果它不是一个巨大的不便,那么参考文献的#ifdef
可能最好。如果您的扩展程序引用受限制的API(就像他们尝试获取设备的UUID一样),Apple会在将来决定中断编译时,它会使您的代码更加向前兼容。
此外,这将使您的框架可用于您可能没有UIKit访问权限的其他场景,例如在OS X上。