Weakable Version License

Platforms Swift support CocoaPods Compatible Carthage compatible Swift Package Manager compatible Twitter

Weakable

Weakable 提供了一种在 Swift 中持有 weak 引用 (弱引用) 的简便方法。

使用 Weakable,您可以创建弱数组、弱字典以及许多其他炫酷的功能。

😎

要求

用法

使用提供的两种方式之一声明您的 Weak 变量

//Given a class
class TestClass {}
//and an instance of that class
var aTestObject = TestClass()

//You can create a Weak like this:
var weakTestObject = Weak(aTestObject)

//Or using the shorthand operator ≈
var anotherWeakTestObject = test

访问您的变量

weakTestObject.object //returns your value as an optional, since it may or may not have been released

运算符

Weakable 带有 3 个运算符,都使用 字符(⌥ + x)。

//Given an object
let object = AwesomeClass()

//you can create a Weak by either
var weakObject = Weak(object)

//or
var weakObject = object
//Given a Weak
var weakObject = object

//you can access the underlying object by
weakObject.object

//or
weakObject
//Given a Weak
var weakObject = object

//you can change the underlying object by
weakObject.object = anotherObject

//or
weakObject  anotherObject

数组和字典

您可以安全地将 Weak 变量存储在集合中(例如,[Weak<TestClass>])。底层对象不会被持有(retain)。

var tests = (1...10).map { TestClass() } // 10 elements
var weakTests = tests.map { $0 } // 10 elements

tests.removeLast() // `tests` now have 9 elements, but `weakTests` have 10

weakTests = weakTests.filterWeaks() // `weakTests` now have 9 elements too, since we dropped the released objects from it

您还可以快速“解包”Weak 集合中的元素

let tests = weakTests.compactWeaks()

变量 tests 现在将是一个 [TestClass],仅包含尚未被释放的元素。

安装

Cocoapods

pod 'Weakable', '~> 1.0'

然后在需要的地方 import Weakable

Carthage

github "BellAppLab/Weakable" ~> 1.0

然后在需要的地方 import Weakable

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/BellAppLab/Weakable", from: "1.0")
]

然后在需要的地方 import Weakable

Git Submodules

cd toYourProjectsFolder
git submodule add -b submodule --name Weakable https://github.com/BellAppLab/Weakable.git

然后将 Weakable 文件夹拖到您的 Xcode 项目中。

作者

Bell App Lab, apps@bellapplab.com

鸣谢

Logo image by Артур Абт from The Noun Project

许可证

Weakable 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件。