Итак, рассмотрим этот случай, у меня есть UIViewController
, который содержит простой UICollectionView
, но Delegate & DataSource
протоколы отделены NSObject
от UIViewController
.
Это выглядит примерно так
class MainCollctionViewDelegate: NSObject, UICollectionViewDelegate
class MainCollectionViewDataSrouce: NSObject, UICollectionViewDataSource
И я использую их внутри моего UIViewController
вот так
lazy var CVDelegate = MainCollctionViewDelegate()
lazy var CVDataSource = MainCollectionViewDataSrouce()
//MARK: - Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
collectionView.registerCell(PlainCell.self) // register custom cell Nib into collection View.
collectionView.delegate = CVDelegate //Set Deleagte
collectionView.dataSource = CVDataSource // Set data Source
}
Будет ли такой подход вызывать любые утечки памятив будущем ?учитывая, что я буду внедрять инъекцию, чтобы заполнить источник данных CollectionView
, чтобы это было что-то подобное в будущем.
MainCollectionViewDataSrouce(with: Foo) // Foo is some data to populate the collection with.
Есть ли лучшая практика для этого?учитывая, что я пытаюсь добиться минимального написания кода (избыточность).
Примечание: это также относится к UITableViewDelegate
& UITableViewDataSource