WeakableSelf 1.1.1

WeakableSelf 1.1.1

Vincent Pradeilles 维护。



  • 作者
  • Vincent Pradeilles

WeakableSelf

platforms pod Carthage compatible

上下文

Closures(闭包)是 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 个参数的闭包一起使用。

安装

要求

  • Swift 4.2+
  • Xcode 10+

CocoaPods

将以下内容添加到您的 Podfile

pod "WeakableSelf"

Carthage

将以下内容添加到您的 Cartfile

github "vincent-pradeilles/weakable-self"