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)。
前缀 ≈
Weak
变量的简写构造函数//Given an object
let object = AwesomeClass()
//you can create a Weak by either
var weakObject = Weak(object)
//or
var weakObject = ≈object
后缀运算符 ≈
Weak
的简写访问器//Given a Weak
var weakObject = ≈object
//you can access the underlying object by
weakObject.object
//or
weakObject≈
中缀运算符 ≈
Weak
的简写赋值//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]
,仅包含尚未被释放的元素。
pod 'Weakable', '~> 1.0'
然后在需要的地方 import Weakable
。
github "BellAppLab/Weakable" ~> 1.0
然后在需要的地方 import Weakable
。
dependencies: [
.package(url: "https://github.com/BellAppLab/Weakable", from: "1.0")
]
然后在需要的地方 import Weakable
。
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 文件。