假設我有一些代表網絡連接的對象。一旦這些連接斷開,關聯的對象就會消失。我不想掛在不再連接的連接對象上。Swift詞典與弱引用鍵?
我也想使用字典將某些數據與這些連接相關聯。所以我可能有代碼:
class Connection { ... }
class Metadata { ... }
var metadata: [Connection: Metadata] = [:]
但上面的代碼意味着詞典將繼續,而我不希望Connection
對象的引用。如果Connection
對象消失,我寧願刪除關聯的條目,最好是自動刪除。
所以,我想:
var metadata: [weak Connection: Metadata] = [:]
但是,這是行不通的。什麼是一個很好的替代解決方案?
不錯的文章在這裏:http://nshipster.com/nshashtable-and-nsmaptable/ – matt
只需在服務器上編寫Swift的每個人都注意:Linux上不存在「NSMapTable」和「NSHashTable」,所以你會需要使用Rob的答案。 – Zoyt