我遇到了一个问题,我的 swift 对象有时会AnyHashable
在添加到Set
.
我的课看起来像这样
protocol ViewModelProtocol: MKAnnotation { ... }
class ViewModel: NSObject, ViewModelProtocol, MKAnnotation { ... } // don't know why compiler doesn't see this as redundant conformance to protocol
我的情况是,我采用这些协议的数组,将其转换为[MKAnnotation]
并将其传递给CCHMapClusterController,后者将其保存到四叉树中,然后通过将这些注释提供NSSet
为可用,然后将其桥接到Set<AnyHashable>
.
奇怪的是,在开发中,当我接受那个时Set<AnyHashable>
,接受第一个对象并有条件地将其转换ViewModelProtocol
为成功。但是在启用编译器优化的发布配置中(在开发中它们被禁用),这种转换失败,因为集合中的元素被包装到 AnyHashable 中,所以我必须取它的基础并将其转换为ViewModelProtocol
.
有没有人经历过这样的事情?我想知道为什么这些东西取决于编译器优化?
我在 Xcode 8.2.1 中遇到了这种行为