Skip to content

Commit cd499d0

Browse files
committed
Set SWIFT_STRICT_CONCURRENCY to complete in EssentialFeediOS and fix all warnings
1 parent 81ec52b commit cd499d0

File tree

4 files changed

+28
-11
lines changed

4 files changed

+28
-11
lines changed

EssentialFeed/EssentialFeed.xcodeproj/project.pbxproj

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1761,7 +1761,10 @@
17611761
SUPPORTS_MACCATALYST = NO;
17621762
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
17631763
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
1764+
SWIFT_APPROACHABLE_CONCURRENCY = YES;
1765+
SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor;
17641766
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
1767+
SWIFT_STRICT_CONCURRENCY = complete;
17651768
SWIFT_VERSION = 5.0;
17661769
TARGETED_DEVICE_FAMILY = 1;
17671770
};
@@ -1795,6 +1798,9 @@
17951798
SUPPORTS_MACCATALYST = NO;
17961799
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
17971800
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
1801+
SWIFT_APPROACHABLE_CONCURRENCY = YES;
1802+
SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor;
1803+
SWIFT_STRICT_CONCURRENCY = complete;
17981804
SWIFT_VERSION = 5.0;
17991805
TARGETED_DEVICE_FAMILY = 1;
18001806
VALIDATE_PRODUCT = YES;
@@ -1821,7 +1827,9 @@
18211827
SUPPORTS_MACCATALYST = NO;
18221828
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
18231829
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
1830+
SWIFT_APPROACHABLE_CONCURRENCY = YES;
18241831
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
1832+
SWIFT_STRICT_CONCURRENCY = complete;
18251833
SWIFT_VERSION = 5.0;
18261834
TARGETED_DEVICE_FAMILY = 1;
18271835
};
@@ -1847,6 +1855,8 @@
18471855
SUPPORTS_MACCATALYST = NO;
18481856
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
18491857
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
1858+
SWIFT_APPROACHABLE_CONCURRENCY = YES;
1859+
SWIFT_STRICT_CONCURRENCY = complete;
18501860
SWIFT_VERSION = 5.0;
18511861
TARGETED_DEVICE_FAMILY = 1;
18521862
VALIDATE_PRODUCT = YES;

EssentialFeed/EssentialFeediOS/Feed UI/Controllers/LoadMoreCellController.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,11 @@ public class LoadMoreCellController: NSObject, UITableViewDataSource, UITableVie
2727
reloadIfNeeded()
2828

2929
offsetObserver = tableView.observe(\.contentOffset, options: .new) { [weak self] (tableView, _) in
30-
guard tableView.isDragging else { return }
31-
32-
self?.reloadIfNeeded()
30+
MainActor.assumeIsolated {
31+
guard tableView.isDragging else { return }
32+
33+
self?.reloadIfNeeded()
34+
}
3335
}
3436
}
3537

EssentialFeed/EssentialFeediOS/Feed UI/Views/Helpers/UIView+Shimmering.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ extension UIView {
3030
private class ShimmeringLayer: CAGradientLayer {
3131
private var observer: Any?
3232

33+
nonisolated override init() { super.init() }
34+
nonisolated override init(layer: Any) { super.init(layer: layer) }
35+
nonisolated required init?(coder: NSCoder) { super.init(coder: coder) }
36+
3337
convenience init(size: CGSize) {
3438
self.init()
3539

@@ -49,7 +53,7 @@ extension UIView {
4953
animation.repeatCount = .infinity
5054
add(animation, forKey: "shimmer")
5155

52-
observer = NotificationCenter.default.addObserver(forName: UIApplication.willEnterForegroundNotification, object: nil, queue: nil) { [weak self] _ in
56+
observer = NotificationCenter.default.addObserver(of: UIApplication.shared, for: .willEnterForeground) { [weak self] _ in
5357
self?.add(animation, forKey: "shimmer")
5458
}
5559
}

EssentialFeed/EssentialFeediOS/Shared UI/Controllers/CellController.swift

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,28 @@
55
import UIKit
66

77
public struct CellController {
8-
let id: AnyHashable
8+
let id: any Hashable & Sendable
99
let dataSource: UITableViewDataSource
1010
let delegate: UITableViewDelegate?
1111
let dataSourcePrefetching: UITableViewDataSourcePrefetching?
1212

13-
public init(id: AnyHashable, _ dataSource: UITableViewDataSource) {
13+
public init(id: any Hashable & Sendable, _ dataSource: UITableViewDataSource) {
1414
self.id = id
1515
self.dataSource = dataSource
1616
self.delegate = dataSource as? UITableViewDelegate
1717
self.dataSourcePrefetching = dataSource as? UITableViewDataSourcePrefetching
1818
}
1919
}
2020

21-
extension CellController: Equatable {
22-
public static func == (lhs: CellController, rhs: CellController) -> Bool {
23-
lhs.id == rhs.id
21+
extension CellController: nonisolated Equatable {
22+
public nonisolated static func == (lhs: CellController, rhs: CellController) -> Bool {
23+
AnyHashable(lhs.id) == AnyHashable(rhs.id)
2424
}
2525
}
2626

27-
extension CellController: Hashable {
28-
public func hash(into hasher: inout Hasher) {
27+
extension CellController: nonisolated Hashable {
28+
public nonisolated func hash(into hasher: inout Hasher) {
29+
let id = AnyHashable(self.id)
2930
hasher.combine(id)
3031
}
3132
}

0 commit comments

Comments
 (0)