ios - 初始化大量实例

标签 ios swift data-structures

我想知道是否有更好的方法来初始化大量相同类型实例的集合。这不仅限于 Swift 的问题,但在这种情况下我使用的是 Swift。

以大量的 API 端点为例。假设我在这个 API 中有 100 个端点,并且每个端点都共享一些通用功能,例如 header 、参数列表、解析格式等...尽管每个“选项”的值不同。

我可以想出几种不同的方式来表达 100 个端点:

  1. 创建一个包含所有值的资源文件,并在应用启动时从文件中读取它们。这样做的问题是它变成了字符串类型,并且有可能出现拼写错误和/或大量复制/粘贴键值。这将包括plist 文件、json 文件、sqlite 表、csv 文件 等。它集中并压缩了数据,但它似乎不便于维护或快速维护。此外,如果细节有些私密,资源文件似乎更难混淆。

  2. 使用所有 API 端点实例创建一个巨大的枚举式函数初始化代码都在同一区域/函数/文件中。这相当于执行一个巨大的 switch 语句或创建一个集合文字,所有实例化都发生在一个地方。这里的优点是它可以是强类型的,并且它也包含在一个区域中,类似于资源文件的作用。但是,这将是一个包含大量滚动的大文件。可能太大了?

  3. 为每个端点创建一个单独的文件/模块/实例/子类型,并或多或少地在实例中硬编码计算属性。这可能是为每个端点创建一个扩展和/或子类,并将它们放在一个单独的 swift 文件中。这限制了每个端点的可视范围,但它也只是将您的项目文件变成了数据 block 。

我想知道这两个选项是否有哲学论证。或者,还有其他我没有想到的选择。是偏好吗?在初始化大量看起来像是一堆复杂文字的集合时,是否有最佳实践?

最佳答案

如果您有大量此类静态数据或机器生成的类,请考虑 WWDC 2016's Optimizing App Startup Time 中的建议.这是一个很棒的谈话。加载程序必须初始化并修复所有静态对象实例和类;如果你有很多,你的应用程序加载时间将受到不利影响。

对于静态数据,一条建议是使用 Swift,您已经这样做了,因为 Swift 知道将实例化推迟到运行时。

Swift 对批量生产的类没有帮助;尽管您可以改用结构。

即使忽略启动时间问题,我也会在数据驱动方面犯错误。选项 1. 需要维护的代码更少。恕我直言这里的字符串类型没有错,这段代码不太可能改变;添加端点将是微不足道的。在您甚至没有编写新代码的情况下看到新功能真是太酷了!

关于ios - 初始化大量实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39056145/

相关文章:

ios - 如何以编程方式从 iPhone 收件箱读取短信

swift - 链接 UIView 动画与 CGAffineTransformscale 和翻译

java - 有没有像ListHashMap这样的数据结构?

java - 代码段的时间复杂度

javascript - 如何在 Javascript 中将数组值映射到对象内的数组?

ios - 将数据从一个实体复制到另一个实体,同时进行核心数据迁移

ios - IOS 中的日期差异

ios - 如何在swift中使用视觉框架从其特征点提取外唇

swift - 如何使 RLMObject 数组成为 Realm 类的属性?

ios - SWIFT 如何从 Google map GMAPAutocomplete 获取经纬度坐标?