我正在实现一个WeakSet,它将其元素弱包装在WeakWrapper中,以免增加它们的保留计数。我的问题是,如何创建一个迭代器,以便我可以迭代跳过那些已被释放的元素(即nil)。请注意,我正在尝试优化迭代;如果插入/删除速度相对较慢也没关系,但是设置迭代器应该很少/没有性能成本。这是我的WeakSet的基本形式。我可以调用clean()来删除对象已被释放的WeakWrapper:structWeakSetwhereT:AnyObject&Hashable{privatevarset:Set>=[]mutatingfuncinsert(_elem:T){self.set.insert(