@@ -416,7 +416,7 @@ public class TableView: UIView {
416
416
417
417
var cellsInViewport : [ TableCell ] = [ ] {
418
418
didSet {
419
- reclaimReleasedCells ( )
419
+ reclaimReleasedCells ( cellsInViewport )
420
420
421
421
guard oldValue != cellsInViewport else { return }
422
422
@@ -496,13 +496,15 @@ public class TableView: UIView {
496
496
. intersects ( adjustedViewport) }
497
497
}
498
498
499
- private func reclaimReleasedCells( ) {
500
- retainedCells. forEach {
501
- if $0. isRetained == false {
502
- self . repository. enqueue ( cell: $0)
503
- retainedCells. remove ( $0)
499
+ private func reclaimReleasedCells( _ cellsInViewport: [ TableCell ] ) {
500
+ retainedCells
501
+ . filter { cellsInViewport. contains ( $0) == false }
502
+ . forEach {
503
+ if $0. isRetained == false {
504
+ self . repository. enqueue ( cell: $0)
505
+ retainedCells. remove ( $0)
506
+ }
504
507
}
505
- }
506
508
}
507
509
508
510
func cellBelow( _ cell: TableCell ) -> TableCell ? {
@@ -870,13 +872,11 @@ extension TableView: TableContentViewDelegate {
870
872
}
871
873
872
874
func tableContentView( _ tableContentView: TableContentView , didReceiveFocusAt range: NSRange , in cell: TableCell ) {
873
- cell. retain ( )
874
875
resetColumnResizingHandles ( selectedCell: cell)
875
876
delegate? . tableView ( self , didReceiveFocusAt: range, in: cell)
876
877
}
877
878
878
879
func tableContentView( _ tableContentView: TableContentView , didLoseFocusFrom range: NSRange , in cell: TableCell ) {
879
- cell. release ( )
880
880
removeSelectionBorders ( )
881
881
delegate? . tableView ( self , didLoseFocusFrom: range, in: cell)
882
882
}
0 commit comments