在结构中使用静态闭包是否安全?

Is it safe to have static closures in structs?

我已经习惯了 structs 而不是 Swift 中的 classes,但是如果我可能由于没有 [= =13=] 还是 [weak self] ? (这在 structprotocol 中是不允许的)。事实上,我正在制作所有 static funcs.

struct OrgAPIservice {

    static func getOrganizations(sinceSyncToken: ...
                                 completion:@escaping (_ orgsList: [Organization]?, _ error: AppError?) -> Void) {

        apiProvider.request(.getOrganizations(...)) { result in
            switch result {
            case .success(let response):

            case .failure(let error):
                completion (nil, getAppErrorFromMoya(with: error))
            }
        }
    }

}

如果函数的调用者是对象,您可以在闭包中包含 weak selfself 指的是提供闭包的对象。它不引用拥有闭包的变量。

例如,如果你有一个classMyClass,那么你可以

class MyClass {

    func callApi() {
        OrgAPIservice.getOrganizations {
            [weak self] in
            // ....
        }
    }
}