【问题标题】:How much memory does one ViewController take?一个 ViewController 占用多少内存?
【发布时间】:2017-02-06 20:37:55
【问题描述】:

我想知道单个 ViewController 占用多少内存,因为当我开发一些应用程序时,我仍然不确定创建更多 ViewControllers 是否更好,或者我应该创建更少ViewControllers 并在代码中更改内容,而不是 UserInterface

我的意思的例子:假设我有两种类型的数据,我想在呈现的ViewController 上看到它们,但这两种类型几乎相同。那么我应该只有一个ViewController 并在代码中进行更改,还是我可以为每种类型创建ViewController

我知道这取决于 UI 中有多少代码和多少东西,但假设它是几行代码,只是一个非常基本的ViewController

我研究了视图控制器的角色 由 Apple 提供,但我找不到答案。 https://developer.apple.com/library/content/featuredarticles/ViewControllerPGforiPhoneOS/index.html#//apple_ref/doc/uid/TP40007457-CH2-SW1

我知道这有点奇怪,但我真的很好奇。 谢谢。

【问题讨论】:

  • 这个问题很大,很难抽象地回答。如果您能给出您正在考虑的实际两种类型的实际示例,我们可能会提供更好的建议。

标签: ios memory uiviewcontroller


【解决方案1】:

未实例化的视图控制器不使用任何内存。作为应用程序的一部分,它只占用微不足道的磁盘空间,但在创建和显示之前在运行时不需要内存。

您目前犯了过早优化的罪行。正确编写代码,使其易于编写、易于维护和易于调试。在您遇到需要解决的问题之前,不要担心内存使用和性能等问题。

如果您有两个不同的屏幕,包含两种不同类型的数据,则创建两个不同的视图控制器。

一旦它开始工作,然后通过 Instruments 运行它并确认您没有泄漏或引用循环浪费内存。

【讨论】:

    【解决方案2】:

    您的代码中额外的视图控制器类的大小可以忽略不计,所以除非您谈论的是它们的极端数量,否则我不会担心这一点。这里的管理原则更有可能是DRY。如果你有一堆在非常小的方面不同的对象(例如标签上的名称等),那么也许你可以创建一个所有这些对象都符合的通用协议,然后你可以编写一个视图控制器专为该协议设计,而不是任何特定对象。但是,如果您发现自己添加了一堆笨拙的 if 语句并以编程方式添加控件,只是为了避免在情节提要中出现多个场景,那么您可能已经走得太远了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-13
      • 2012-01-07
      • 2018-03-07
      • 2010-09-13
      • 1970-01-01
      • 2015-10-13
      • 2012-06-17
      • 1970-01-01
      相关资源
      最近更新 更多