从按钮执行 segue 时应用程序冻结

Posted

技术标签:

【中文标题】从按钮执行 segue 时应用程序冻结【英文标题】:App freezes when segue performed from button 【发布时间】:2013-10-08 01:01:57 【问题描述】:

我的故事板中有一个按钮,它显示了一个带有模态转场的视图控制器。每次按下此按钮,应用程序都会冻结(没有崩溃,也没有错误消息)。 prepareForSegue 被调用,所有应该存在的视图控制器都在 prepareForSegue 的代码中,但它们不会出现在屏幕上。我可以从同一个按钮模态切换到另一个视图控制器就好了。关于为什么会发生这种情况或如何解决它的任何想法?

我尝试过的事情:

    删除按钮或使用其他按钮 在 IB 中重新创建 segue

【问题讨论】:

你能显示一些代码吗? 你想看什么代码?所有这一切都是在 IB 控制拖动 segues 中完成的。 @Kevin 你能发布你的准备方法吗? 我只是在那里放了一个断点并 po'd segue.destinationViewController 以确认正在创建视图控制器。 【参考方案1】:

终于让 Xcode 给我一条错误信息...原来我已经完成了

if (self == [super init]) 

我应该什么时候完成

if (self = [super init]) 

导致各种内存问题。

【讨论】:

为此我想看看你的代码 :) 有时是小错误,会破坏所有应用程序 然而,这是一个不好的做法,因为使用== 太容易了(正如您发现的困难方法),因为您看到它位于if 中。更好的是明确地打破它,比如self = [super init]; if (self) ... 不会将 "==" 更改为 "=" 使 if 语句始终返回 true 吗? 只有超级初始化成功才会返回true。这基本上是 Obj-C 处理可失败初始化程序的方式。 if 语句防止在 super 调用为 nil 时为实例变量分配内存。【参考方案2】:

我在 ios 9 中遇到了类似的问题,该问题通过未在故事板中的 UITextViews 中设置任何文本来解决,这些文本位于目标视图控制器中...很奇怪,但它已解决!

iOS 9 Segue Causes App To Freeze (no crash or error thrown)

【讨论】:

以上是关于从按钮执行 segue 时应用程序冻结的主要内容,如果未能解决你的问题,请参考以下文章

iOS 应用程序在 swift 中关闭视图后冻结

在swift3中按下按钮时如何以编程方式执行segue或呈现视图

如何使 segue 等待功能在按钮按下时完成?

为啥程序在登录时不执行segue?

使用按下按钮和数组行的标识来执行 segue

在没有按钮连接的情况下以编程方式执行 Segue?