A mechanism for ergonomic and safe capturing & weakifying objects in Swift.
Without Capture
With Capture
Default
{ [weak self] in
guard let self else { return }
/// ...
}
capture { _self in
/// ...
}
Multiple parameters
{ [weak self] a, b, c in
guard let self else { return }
/// ...
}
capture { _self, a, b, c in
/// ...
}
Methods
{ [weak self] in
guard let self = self else { return }
self.someMethod()
}
capture(in: <#Type#>.someMethod)
Return values
let object.dataSource = { [weak self] in
guard let self = self else { return [] }
return self.data
}
let object.dataSource = capture(orReturn: [], in: \.data)
You can add swift-capture
to an Xcode project by adding it as a package dependency.
"https://github.com/capturecontext/swift-capture"
into the package repository URL text fieldIf you use SwiftPM for your project, you can add weak
to your package file. Also my advice is to use SSH.
.package(
url: "[email protected]:capturecontext/swift-capture.git",
.upToNextMajor("3.0.0")
)
Do not forget about target dependencies:
.product(
name: "Capture",
package: "swift-capture"
)
This library is released under the MIT license. See LICENSE for details.
link |
Stars: 7 |
Last commit: 4 weeks ago |
Minor fixes with no impact on API
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics