NSSet保存其对象的强引用,因此Objective C的解决方案是使用NSHashTable.weakObjectsHashTable()。
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
我错过了什么?还是这个存在漏洞?
NSHashTable
中。我不得不将这个Swift对象变成NSObject
的子类,才能将其添加到哈希表中。 - ribeto