ios – Swift项目比我预期的要大

我的项目有4个框架和31个(31种语言)自定义键盘扩展.当我编译它时,它需要98 MB的内部设备内存.

所以我决定看看为什么这么多.我在设备文件夹中找到了我的项目.

文件插件占用38 MB,文件夹框架占用42 MB.

在Frameworks文件夹中有4个我的框架和8个Swift框架,您可以在上面的图片中看到

我的每个框架都包含相同的8个Swift框架.我可以以某种方式只添加这个快速框架一次吗?

并非全部.在插件文件夹中是我的自定义键盘扩展文件夹.我有200个图像添加到我的一个模块(框架)中,并将其引用到每个扩展中(因为它们需要用于构建键盘的图像).但在项目文件夹中,每个扩展文件夹都有该图像.它需要大量的内存.

所以…我可以以某种方式只添加一次图像(不是每个自定义键盘扩展名)?我可以只添加一次swift框架(不是每个我的框架和项目)吗?

编辑:

我暗示每个自定义键盘扩展都像是单独的程序.所以maby他们真的需要将这些图像复制到每个扩展中.

解决方法

看起来这是由于为实现兼容性保证而采取的措施.

… Xcode embeds a small Swift runtime library within your app’s bundle. Because the library is embedded,your app uses a consistent version of Swift that runs on past,present,and future OS releases.

有趣的是,您在每个框架中都看到了它.该声明似乎表明该框架不包含运行时库.

While your app’s runtime compatibility is ensured,the Swift Language itself will continue to evolve,and the binary interface will also change. To be safe,all components of your app should be built with the same version of Xcode and the Swift compiler to ensure that they work together.

资料来源:Swift Blog – Compatibility

我不确定你是否能控制它.一个很好的选择是打败devforums,看看Swift的创造者是否可以减少更多光线.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...