[英]Storyboard segues causing memory leaks
我有兩個帶有按鈕的UIViewControllers,它們相互觸發segue(模態)。 我想發現這是否在來回跳躍時引起任何內存泄漏,並且我發現Living Object &&分配的內存正在增加,最終將導致應用程序崩潰。 我沒有任何一行代碼-使用純UIViewControllers。
我可能做錯了什么?
我可以在項目設置中設置一些錯誤嗎?
我是否認真閱讀了探查器的靜力學?
使用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.