I have an extension Array
in the form of:
extension Array
{
private func someFunction(someClosure: (() -> Int)?)
{
// Do Some
As already said, Optional
closures are escaping
. An addition though:
Swift 3.1 has a withoutActuallyEscaping helper function that can be useful here. It marks a closure escaping
only for its use inside a passed closure, so that you don't have to expose the escaping
attribute to the function signature.
Can be used like this:
extension Array {
private func someFunction(someClosure: (() -> Int)?) {
someClosure?()
}
func someOtherFunction(someOtherClosure: () -> Int) {
withoutActuallyEscaping(someOtherClosure) {
someFunction(someClosure: $0)
}
}
}
let x = [1, 2, 3]
x.someOtherFunction(someOtherClosure: { return 1 })
Hope this is helpful!