如何在Swift中设置弱引用

时间:2014-07-25 18:37:06

标签: swift foundation xcode6

NSSet拥有对其对象的强引用,因此Objective C解决方案是使用NSHashTable.weakObjectsHashTable()a la

NSHashTable* mySet = [NSHashTable weakObjectsHashTable];
[mySet addObject:anyOldObject];
[mySet count]; //returns 1
[mySet containsObject:anyOldObject]; //returns true

在swift中然而这似乎不起作用

var mySet = NSHashTable.weakObjectsHashTable()
mySet.addObject(anyOldObject)
mySet.count //returns 1
mySet.containsObject(anyOldObject) //returns false

我错过了什么?或者这是一个错误吗?

1 个答案:

答案 0 :(得分:1)

在Xcode6b5上并使用字符串作为anyOldObject,我能够看到返回true发生。 6b4中存在一些错误,这些错误阻止了在解释器中返回可选值,这意味着它们正在被积极清理 - 这可能是一个像这样的问题,在这里具有相同的效果。值得重新尝试看看你是否在最新测试版中有相同的行为。