ReferenceValet

public final class ReferenceValet

A ReferenceValet help pass references to closures without creating retaining cycles or having to use captures list directly.

  • Passes the given reference as an argument instead of having to create a capture list and check boilerplate code

    Declaration

    Swift

    public static func enclose<Reference>(reference: Reference,
                                          in closure: @escaping (Reference) -> Void) -> () -> Void
        where Reference: AnyObject

    Parameters

    reference

    reference to pass without retaining

    closure

    closure containing the business logic

  • Passes the given reference as an argument instead of having to create a capture list and check boilerplate code

    Declaration

    Swift

    public static func enclose<Reference, A>(reference: Reference,
                                             in closure: @escaping (Reference, A) -> Void) -> (A) -> Void
        where Reference: AnyObject

    Parameters

    reference

    reference to pass without retaining

    closure

    closure containing the business logic

  • Passes the given reference as an argument instead of having to create a capture list and check boilerplate code

    Declaration

    Swift

    public static func enclose<Reference, A, B>(reference: Reference,
                                                in closure: @escaping (Reference, A, B) -> Void) -> (A, B) -> Void
        where Reference: AnyObject

    Parameters

    reference

    reference to pass without retaining

    closure

    closure containing the business logic

  • Passes the given reference as an argument instead of having to create a capture list and check boilerplate code

    Declaration

    Swift

    public static func enclose<Reference, A, B, C>(reference: Reference,
                                                   in closure: @escaping (Reference, A, B, C) -> Void) -> (A, B, C) -> Void
        where Reference: AnyObject

    Parameters

    reference

    reference to pass without retaining

    closure

    closure containing the business logic

  • Passes the given reference as an argument instead of having to create a capture list and check boilerplate code

    Declaration

    Swift

    public static func enclose<Reference, Result>(reference: Reference,
                                                  in closure: @escaping (Reference) -> Result) -> () -> Result
        where Reference: AnyObject, Result: ExpressibleByNilLiteral

    Parameters

    reference

    reference to pass without retaining

    closure

    closure containing the business logic

    Return Value

    the wrapped closure’s result or nil if reference doesn’t exits

  • Passes the given reference as an argument instead of having to create a capture list and check boilerplate code

    Declaration

    Swift

    public static func enclose<Reference, A, Result>(reference: Reference,
                                                     in closure: @escaping (Reference, A) -> Result) -> (A) -> Result
        where Reference: AnyObject, Result: ExpressibleByNilLiteral

    Parameters

    reference

    reference to pass without retaining

    closure

    closure containing the business logic

    Return Value

    the wrapped closure’s result or nil if reference doesn’t exits

  • Passes the given reference as an argument instead of having to create a capture list and check boilerplate code

    Declaration

    Swift

    public static func enclose<Reference, A, B, Result>(reference: Reference,
                                                        in closure: @escaping (Reference, A, B) -> Result) -> (A, B) -> Result
        where Reference: AnyObject, Result: ExpressibleByNilLiteral

    Parameters

    reference

    reference to pass without retaining

    closure

    closure containing the business logic

    Return Value

    the wrapped closure’s result or nil if reference doesn’t exits

  • Passes the given reference as an argument instead of having to create a capture list and check boilerplate code

    Declaration

    Swift

    public static func enclose<Reference, A, B, C, Result>(reference: Reference,
                                                           in closure: @escaping (Reference, A, B, C) -> Result) -> (A, B, C) -> Result
        where Reference: AnyObject, Result: ExpressibleByNilLiteral

    Parameters

    reference

    reference to pass without retaining

    closure

    closure containing the business logic

    Return Value

    the wrapped closure’s result or nil if reference doesn’t exits

  • Passes the given reference as an argument instead of having to create a capture list and check boilerplate code

    Declaration

    Swift

    public static func enclose<Reference, Result>(reference: Reference,
                                                  defaultingTo result: Result,
                                                  in closure: @escaping (Reference) -> Result) -> () -> Result
        where Reference: AnyObject

    Parameters

    reference

    reference to pass without retaining

    closure

    closure containing the business logic

    Return Value

    the wrapped closure

  • Passes the given reference as an argument instead of having to create a capture list and check boilerplate code

    Declaration

    Swift

    public static func enclose<Reference, A, Result>(reference: Reference,
                                                     defaultingTo result: Result,
                                                     in closure: @escaping (Reference, A) -> Result) -> (A) -> Result
        where Reference: AnyObject

    Parameters

    reference

    reference to pass without retaining

    closure

    closure containing the business logic

    Return Value

    the wrapped closure

  • Passes the given reference as an argument instead of having to create a capture list and check boilerplate code

    Declaration

    Swift

    public static func enclose<Reference, A, B, Result>(reference: Reference,
                                                        defaultingTo result: Result,
                                                        in closure: @escaping (Reference, A, B) -> Result) -> (A, B) -> Result
        where Reference: AnyObject

    Parameters

    reference

    reference to pass without retaining

    closure

    closure containing the business logic

    Return Value

    the wrapped closure

  • Passes the given reference as an argument instead of having to create a capture list and check boilerplate code

    Declaration

    Swift

    public static func enclose<Reference, A, B, C, Result>(reference: Reference,
                                                           defaultingTo result: Result,
                                                           in closure: @escaping (Reference, A, B, C) -> Result) -> (A, B, C) -> Result
        where Reference: AnyObject

    Parameters

    reference

    reference to pass without retaining

    closure

    closure containing the business logic

    Return Value

    the wrapped closure

  • Calls the given closure with the reference passed to it (instead of having to add capture list and then check if reference exists).

    Declaration

    Swift

    public static func call<Reference>(_ target: (@escaping () -> Void) throws -> Void,
                                       with reference: Reference,
                                       on closure: @escaping (Reference) -> Void) rethrows
        where Reference: AnyObject

    Parameters

    target

    the function to pass the trailing closure to

    reference

    reference to pass without retaining

    closure

    closure containing the final argument to be passed to the target function

  • Calls the given closure with the reference passed to it (instead of having to add capture list and then check if reference exists).

    Declaration

    Swift

    public static func call<Reference, X, Y>(_ target: (@escaping () -> X) throws -> Y,
                                             with reference: Reference,
                                             on closure: @escaping (Reference) -> X) rethrows -> Y
        where Reference: AnyObject, X: ExpressibleByNilLiteral

    Parameters

    target

    the function to pass the trailing closure to

    reference

    reference to pass without retaining

    closure

    closure containing the final argument to be passed to the target function

    Return Value

    the result of the target function

  • Calls the given closure with the reference passed to it (instead of having to add capture list and then check if reference exists).

    Declaration

    Swift

    public static func call<Reference, X, Y>(_ target: (@escaping () -> X) throws -> Y,
                                             with reference: Reference,
                                             defaultingTo result: X,
                                             on closure: @escaping (Reference) -> X) rethrows -> Y
        where Reference: AnyObject

    Parameters

    target

    the function to pass the trailing closure to

    reference

    reference to pass without retaining

    result

    the default result in case the reference no long exists

    closure

    closure containing the final argument to be passed to the target function

    Return Value

    the result of the target function

  • Calls async on the given dispatch queue (or the main queue if not specified) with the closure that is supplied with the give reference. Saves adding the capture list and checking if reference exists.

    Declaration

    Swift

    public static func async<Reference>(_ reference: Reference,
                                        on queue: DispatchQueue = DispatchQueue.main,
                                        in closure: @escaping (Reference) -> Void)
        where Reference: AnyObject

    Parameters

    reference

    reference to pass without retaining

    queue

    queue to run task on

    closure

    closure containing the task