WeakableSelf

platforms pod Carthage compatible

背景

闭包是 Swift 必备功能之一,Swift 开发者都知道当它们捕获外部对象的引用时可能会非常棘手,特别是当这个对象是 self 时。

为了解决这个问题,开发者需要编写额外的代码,使用诸如 [weak self]guard 之类的结构,结果如下所示:

service.call(completion: { [weak self] result in
    guard let self = self else { return }
    
    // use weak non-optional `self` to handle `result`
})

WeakableSelf 的目的

这个微型框架的目的是为开发者提供一个辅助函数 weakify,允许他们声明式地指示他们希望在闭包中使用对 self 的弱非可选引用,而无需担心如何提供此引用。

用法

使用这个 weakify 函数,上面的代码将被转换成更简洁的形式:

import WeakableSelf

service.call(completion: weakify { strongSelf, result in    
    // use weak non-optional `strongSelf` to handle `result`
})

weakify 适用于最多接受 7 个参数的闭包。

安装

要求

CocoaPods

将以下内容添加到你的 Podfile

pod "WeakableSelf"

Carthage

将以下内容添加到你的 Cartfile

github "vincent-pradeilles/weakable-self"