iOS 在现有应用的基础上构建应用扩展。如何避免代码重复?

iOS Build app extension base on existing app. How to avoid code duplication?

我有一个 iOS 应用程序可以为视频添加音效。现在我想构建应用程序扩展目标以支持库存照片应用程序。但是,我必须复制 iOS 应用程序中的几乎所有代码。到目前为止,我的解决方案是将常用功能放在共享文件中并将其用于两个目标,因为应用程序中的某些代码链接到 AppDelegate,我无法在 App Extension 中使用它。在这种情况下有没有更好的方法来避免代码重复?

还有一个问题:我在AppStore上看到的大多数插件只有一个屏幕,有什么规定吗?

在我的应用程序中,我必须让用户从文件夹和库中选择声音,并且它需要导航控制器。但是 Navigation Controller 在 App Extension 中不可用,我应该构建自己的 Navigaion Controller 还是有更好的方法?

只要您不需要以 iOS 7 或更早版本为目标,就可以将通用 类 放入共享框架并从两个目标加载该框架。这避免了在磁盘上有两个代码实例。

作为额外的好处,由于 OS 处理共享库加载的方式,所有实际代码页都在应用程序和扩展程序之间共享,因此您也不会浪费 RAM。