2014-07-25 22 views
7

的NSSet持有強引用它的對象,這樣的目標C解決方案是使用NSHashTable.weakObjectsHashTable()一如何使一個弱引用斯威夫特設置

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

在迅速然而,這似乎拉不工作

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

我錯過了什麼?或者這是一個錯誤?

+0

你期望mySet.allObjects也返回一個非空數組嗎?因爲它似乎沒有。 –

+0

是的,我正在離開,作爲一個讀者的練習:)我一點也不明白 – Hammer

+0

不,我也沒有。我不能假裝對weakObjectsHashTable瞭解太多,但它肯定會感覺到* buggy。 –

回答

0

在Xcode6b5上使用一個字符串作爲anyOldObject,我可以看到返回true的情況。在6b4中有一些錯誤阻止了可選值在解釋器中返回,這意味着他們正在積極清理 - 這可能是一個像這樣的問題,在這裏有相同的效果。值得重新嘗試,看看你是否在最新的測試版中有相同的行爲。

+0

不知道OP,但我仍然遇到iOS9.0 beta的這些問題。被抨擊的事情似乎並沒有保留其內容。 – Ash