设置视图作为他们自己的代表swift

问题描述:

我在考虑继承UICollectionView并将其设置为自己的委托并编写自己的委托包装器。内存方面是否安全? (该对象将指向自身)设置视图作为他们自己的代表swift

+0

没有内存问题,但它可能会导致难以使用或难以维护的代码。收集视图需要在某个时刻与其他对象进行协调,并且不需要代理将会很困难。 –

这将是可能的,如前所述,但遵循MVC和其他类似的良好开发模式,保持数据源和委托与视图分离是一个好主意。否则,您将走向一条难以测试代码的路径,并混合数据和视图之间的界限。这种影响可能与您目前的计划并不一致,但可能会稍后。 通过子类化集合视图,您还将放弃视图生命周期回调,包括viewDidLoad和viewWillAppear等,这些可以用来设置视图。如果你想实现自己的数据源和委托包装器,至少需要子类UICollectionViewController。这样您就可以在不违反良好规范的情况下自定义行为。

我觉得没有问题,即(内存明智)作为委托和数据源vaiables是weak

weak public var delegate: UICollectionViewDelegate? 
weak public var dataSource: UICollectionViewDataSource? 

只要你有一个有另一个类强烈的参考意见,你应该没有问题。视图将保存在内存中,直到父类释放它,或者父类本身被处置。