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
我错过了什么?或者这是一个错误吗?
答案 0 :(得分:1)
在Xcode6b5上并使用字符串作为anyOldObject,我能够看到返回true发生。 6b4中存在一些错误,这些错误阻止了在解释器中返回可选值,这意味着它们正在被积极清理 - 这可能是一个像这样的问题,在这里具有相同的效果。值得重新尝试看看你是否在最新测试版中有相同的行为。