Будет ли проблема с управлением памятью при создании экземпляра UITableViewCell с использованием метода класса? - PullRequest
0 голосов
/ 20 июня 2020
    extension SettingsTableViewController {
         override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
             let cell = SettingsTableViewCell.getSettingTableViewCell(tableview: tableView, indexPath: indexPath)
             return cell
         }
    }
    class SettingsTableViewCell: UITableViewCell {
         static let identifier = "SettingsTableViewCell"
         public class func getSettingTableViewCell(tableview: UITableView, indexPath: IndexPath) -> SettingsTableViewCell {
             if let cell = tableview.dequeueReusableCell(withIdentifier: self.identifier, for: indexPath) as? SettingsTableViewCell {
                 return cell
             }
             return SettingsTableViewCell()
         }
     }

Создавая экземпляр ячейки tableView с этим подходом. Собираемся ли мы столкнуться с какой-либо проблемой, связанной с управлением памятью?

1 Ответ

2 голосов
/ 20 июня 2020

Короче говоря, нет.

Однако вам не нужно делать это вручную, когда вы регистрируете свой класс ячейки с помощью tableview:

// e.g. in viewDidLoad
tableView.register(SettingsTableViewCell.self, forCellReuseIdentifier: "cell")

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SettingsTableViewCell
    return cell
}

...