【问题标题】:On iOS, can presentViewController cause an overflow (like a stack overflow)?在 iOS 上,presentViewController 会导致溢出(如堆栈溢出)吗?
【发布时间】:2012-09-26 09:43:40
【问题描述】:

由于我们可以调用presentViewControllerdismissViewControllerAnimated(即dismissViewController,首先指定动画),它看起来像一个堆栈结构,我们可以呈现3次,关闭3次,就像一个链“呈现”视图控制器作为头部,一个“呈现”视图控制器,它实际上是另一个“呈现”视图控制器本身。

如果是这种情况,它是否真的会在 N 次之后溢出——如果我们继续在新视图控制器中调用 presentViewController 但从不关闭。文档似乎没有警告存在这种可能性。

【问题讨论】:

  • 我觉得它就像一个链表,所以没有固定的限制。你可能首先会耗尽内存。
  • 对了,为什么栈溢出这么快?如果每个线程都可以访问4GB,理论上不是可以轻松拥有数千级或更多的堆栈吗?
  • 在 iOS 上,没有线程会有 4GB 堆栈......也许是 iPhone 15。
  • 哦,我的意思是一般来说,就像在 iMac 上...
  • 对了,不是视图控制器和视图重物吗?我有一个应用程序不断呈现新的视图控制器,但在第 10 次之后,仪器中显示的总分配字节只有 7.56 MB...我再做 6 次,它是 11MB...所以也许不是继续展示是个好主意,因为它可能会在一定程度上耗尽内存……我们说的是旧 iOS 设备上的 25MB 和新设备上的 50MB?

标签: ios uiviewcontroller uikit


【解决方案1】:

实际上,没有。编写一个无限的presentViewController 测试用例,看看会发生什么。很可能你会达到内存限制。如果这不是一个纯粹的理论问题,并且您正在考虑以这种方式编写界面,那么不要,寻找另一种方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-08
    • 2012-09-18
    • 2015-05-21
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    相关资源
    最近更新 更多