0

我遇到了一个问题,我的 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 中遇到了这种行为

4

0 回答 0