Skip to content

Commit b0d70d1

Browse files
committed
Making delegate weak
1 parent fb36cb9 commit b0d70d1

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

CollectionViewWaterfallLayout.swift

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ class CollectionViewWaterfallLayout: UICollectionViewLayout {
7979
}
8080

8181
//MARK: Private Properties
82-
private var delegate: CollectionViewWaterfallLayoutDelegate {
82+
private weak var delegate: CollectionViewWaterfallLayoutDelegate? {
8383
get {
84-
return collectionView.delegate as CollectionViewWaterfallLayoutDelegate
84+
return collectionView.delegate as? CollectionViewWaterfallLayoutDelegate
8585
}
8686
}
8787
private var columnHeights = [Float]()
@@ -102,7 +102,7 @@ class CollectionViewWaterfallLayout: UICollectionViewLayout {
102102
return;
103103
}
104104

105-
assert(delegate.conformsToProtocol(CollectionViewWaterfallLayoutDelegate), "UICollectionView's delegate should conform to WaterfallLayoutDelegate protocol")
105+
assert(delegate?.conformsToProtocol(CollectionViewWaterfallLayoutDelegate), "UICollectionView's delegate should conform to WaterfallLayoutDelegate protocol")
106106
assert(columnCount > 0, "WaterfallFlowLayout's columnCount should be greater than 0")
107107

108108
// Initialize variables
@@ -126,15 +126,15 @@ class CollectionViewWaterfallLayout: UICollectionViewLayout {
126126
* 1. Get section-specific metrics (minimumInteritemSpacing, sectionInset)
127127
*/
128128
var minimumInteritemSpacing: Float
129-
if let height = delegate.collectionView?(collectionView, layout: self, minimumInteritemSpacingForSection: section) {
129+
if let height = delegate?.collectionView?(collectionView, layout: self, minimumInteritemSpacingForSection: section) {
130130
minimumInteritemSpacing = height
131131
}
132132
else {
133133
minimumInteritemSpacing = self.minimumInteritemSpacing
134134
}
135135

136136
var sectionInset: UIEdgeInsets
137-
if let inset = delegate.collectionView?(collectionView, layout: self, insetForSection: section) {
137+
if let inset = delegate?.collectionView?(collectionView, layout: self, insetForSection: section) {
138138
sectionInset = inset
139139
}
140140
else {
@@ -148,15 +148,15 @@ class CollectionViewWaterfallLayout: UICollectionViewLayout {
148148
* 2. Section header
149149
*/
150150
var headerHeight: Float
151-
if let height = delegate.collectionView?(collectionView, layout: self, heightForHeaderInSection: section) {
151+
if let height = delegate?.collectionView?(collectionView, layout: self, heightForHeaderInSection: section) {
152152
headerHeight = height
153153
}
154154
else {
155155
headerHeight = self.headerHeight
156156
}
157157

158158
var headerInset: UIEdgeInsets
159-
if let inset = delegate.collectionView?(collectionView, layout: self, insetForHeaderInSection: section) {
159+
if let inset = delegate?.collectionView?(collectionView, layout: self, insetForHeaderInSection: section) {
160160
headerInset = inset
161161
}
162162
else {
@@ -194,10 +194,10 @@ class CollectionViewWaterfallLayout: UICollectionViewLayout {
194194

195195
let xOffset = Float(sectionInset.left) + Float(itemWidth + minimumColumnSpacing) * Float(columnIndex)
196196
let yOffset = columnHeights[columnIndex]
197-
let itemSize = delegate.collectionView(collectionView, layout: self, sizeForItemAtIndexPath: indexPath)
197+
let itemSize = delegate?.collectionView(collectionView, layout: self, sizeForItemAtIndexPath: indexPath)
198198
var itemHeight: Float = 0.0
199-
if itemSize.height > 0 && itemSize.width > 0 {
200-
itemHeight = Float(itemSize.height) * itemWidth / Float(itemSize.width)
199+
if itemSize?.height > 0 && itemSize?.width > 0 {
200+
itemHeight = Float(itemSize!.height) * itemWidth / Float(itemSize!.width)
201201
}
202202

203203
attributes = UICollectionViewLayoutAttributes(forCellWithIndexPath: indexPath)
@@ -216,15 +216,15 @@ class CollectionViewWaterfallLayout: UICollectionViewLayout {
216216
var columnIndex = longestColumnIndex()
217217
top = columnHeights[columnIndex] - minimumInteritemSpacing + Float(sectionInset.bottom)
218218

219-
if let height = delegate.collectionView?(collectionView, layout: self, heightForFooterInSection: section) {
219+
if let height = delegate?.collectionView?(collectionView, layout: self, heightForFooterInSection: section) {
220220
footerHeight = height
221221
}
222222
else {
223223
footerHeight = self.footerHeight
224224
}
225225

226226
var footerInset: UIEdgeInsets
227-
if let inset = delegate.collectionView?(collectionView, layout: self, insetForFooterInSection: section) {
227+
if let inset = delegate?.collectionView?(collectionView, layout: self, insetForFooterInSection: section) {
228228
footerInset = inset
229229
}
230230
else {

0 commit comments

Comments
 (0)