簡體   English   中英

情節提要串擾導致內存泄漏

[英]Storyboard segues causing memory leaks

我有兩個帶有按鈕的UIViewControllers,它們相互觸發segue(模態)。 我想發現這是否在來回跳躍時引起任何內存泄漏,並且我發現Living Object &&分配的內存正在增加,最終將導致應用程序崩潰。 我沒有任何一行代碼-使用純UIViewControllers。 故事板

分析器1

探查器2項目的設置

我可能做錯了什么?
我可以在項目設置中設置一些錯誤嗎?
我是否認真閱讀了探查器的靜力學?
使用segue時是否需要執行任何特殊的發布命令?

您沒有正確使用模式搜索。 實現它的方式是,在查詢時正在創建每個視圖控制器的新實例,而不是返回到原來的實例。 這就是為什么您的內存使用量持續增加的原因。

在iOS 6之前,解決此問題的正確方法是:

1)在視圖控制器1中定義一個方法,例如viewController2Done
2)在視圖控制器2中,創建一個名為id類型的delegate的屬性。
3)在視圖控制器1的prepareToSegue中,將視圖控制器2中的delegate設置為self
4)在視圖控制器2中,當需要返回視圖控制器1時,請調用[delegate viewController2Done]
5)在viewController2Done調用[self dismissModalViewControllerAnimated:YES]

此方法仍可在iOS 6中使用,但也可以使用新的unwind segue 要使用它,您將在視圖控制器1中定義一個方法,如下所示:

目標C:

- (IBAction)unwindFromViewController2:(UIStoryboardSegue *)segue
{
    NSLog(@"and we are back");
}

迅速:

@IBAction func unwindFromViewController2(_ segue: UIStoryboardSegue) {
    print("and we are back")
}

然后,您需要控制從視圖控制器2中的按鈕拖動到情節提要中視圖控制器上方欄中橙色的退出圖標。 在彈出窗口中,您將選擇unwindFromViewController2然后完成。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM