Ios 为什么performsguewithidentifier总是创建一个新实例?

Ios 为什么performsguewithidentifier总是创建一个新实例?,ios,storyboard,segue,Ios,Storyboard,Segue,我有3个视图控制器:containerViewController,questionViewController,answerViewController 在不从视图控制器创建新实例的情况下,如何交换问题和答案?因此,如果创建了一个,请使用该文件 通常我会这样在他们之间交换: containerViewController!.performSegueWithIdentifier("question", sender:self) 但这总是会创建一个新实例。是的,它总是会创建一个新实例。毫无疑

我有3个视图控制器:
containerViewController
questionViewController
answerViewController

在不从视图控制器创建新实例的情况下,如何交换问题和答案?因此,如果创建了一个,请使用该文件

通常我会这样在他们之间交换:

containerViewController!.performSegueWithIdentifier("question", sender:self) 

但这总是会创建一个新实例。

是的,它总是会创建一个新实例。毫无疑问。因为该命令等于创建一个新对象并推送它(或呈现它)


有很多方法可以解决这个问题。在我的例子中,我通常使用一个按钮创建questionViewController,通过该按钮,它将显示answerViewController。answerViewController将有一个按钮可关闭。我想你可以试试

我需要以编程的方式进行操作,而且返回相同的
questionViewController
back
yes也很重要。用我的方式,和我们的“后退”按钮关闭answerViewController,你可以回到完全相同的questionViewController。啊,好的,因此,按
back
不应该调用
performsguewithidentifier
,而是应该从容器中删除
answerViewController
,您不想让它创建新实例有什么特殊原因吗?虽然这是一种浪费的做事方式,但这是相当标准的行为,UIKit会自行清理以降低内存使用率。这并不重要,但在
question
Table
ViewController
图片右侧看不到的地方,我需要做一些清理,并且
questionTableViewController
deinit
没有被调用,你知道为什么吗?如果没有调用
deinit
,很可能是因为你在某处保留了对ViewController的强引用。还有更好的地方可以整理您的viewController,例如
viewwilldiscover
@chedabob数组持有引用,而不是
deinit
被调用