Swift 我应该每次都初始化新的ViewController还是重置旧的ViewController?

Swift 我应该每次都初始化新的ViewController还是重置旧的ViewController?,swift,uiviewcontroller,uikit,Swift,Uiviewcontroller,Uikit,我有一个应用程序,其中用户有一个他们关注的股票列表(因此它可以变化)。当用户单击列表中的单元格时,会打开一个StockViewController(),其中显示股票数据。我开始担心每次初始化一个新的ViewController都是不好的做法,会导致内存使用量随着时间的推移而增加(甚至不能完全确定这是不是真的) 我曾尝试在每次使用后通过重置其中的tableview/数据来使用同一个ViewController,但我很难成功地使其成为一个平滑的过程。以上述方式操作是否会导致我的应用程序出现问题,还是

我有一个应用程序,其中用户有一个他们关注的股票列表(因此它可以变化)。当用户单击列表中的单元格时,会打开一个StockViewController(),其中显示股票数据。我开始担心每次初始化一个新的ViewController都是不好的做法,会导致内存使用量随着时间的推移而增加(甚至不能完全确定这是不是真的)

我曾尝试在每次使用后通过重置其中的tableview/数据来使用同一个ViewController,但我很难成功地使其成为一个平滑的过程。以上述方式操作是否会导致我的应用程序出现问题,还是每次都应尝试使用下面相同的ViewController

class VCManager {

    static var stockVC = StockViewController()

    static func resetStockVC() {
        stockVC.stockData = [StockData]()
        stockVC.tableView.reloadData()
    }
}

每次初始化一个新的视图控制器不仅很好,而且非常常见。当您关闭该视图控制器时,它的内存将自动释放,因此您不会超时增加内存使用。(除了在视图控制器中有一个可能导致内存泄漏的保留周期外,这是一个完全不同的主题)。

我同意Reza的观点。缓存视图控制器并不常见。创建视图控制器的新实例非常快,布局视图取决于视图层次结构的复杂性

每次需要时创建一个新的视图控制器不仅具有仅在需要时和需要时使用内存的优点,而且还可以从中删除状态处理。也就是说,您不再需要负责更新您的模型,并且您的表视图与基础模型数据保持同步,确保您的数据源与模型和
tableView.reloadData()保持同步。理想情况下,您应该将模型数组作为初始值设定项的一部分注入,并将其存储为属性常量。使用常量还可以使您的意图对其他人显而易见,而不必担心模型更改

class VCManager {

    static var stockVC = StockViewController()

    static func resetStockVC() {
        stockVC.stockData = [StockData]()
        stockVC.tableView.reloadData()
    }
}