Gus*_*osa 11 generics protocols swift swift2
我正在开发一个使用Swift 2和Xcode 7.3的项目,并面临一个我无法理解原因的错误.
我创建了一个名为Resource
a associatedtype
和a static var
的协议.
在它的扩展中,我正在尝试创建static var
getter 的默认实现,其中类型是struct
实现另一个protocol
调用的泛型ResourceFinderProtocol
.
这一切都编译良好,但在运行时,当执行下面的代码片段的最后一行时,它会产生EXC_BAD_ACCESS
崩溃.
如果我使struct ResourceFinder
非泛型,它运作顺利.
protocol Resource {
associatedtype ResourceFinderType
static var localObjects: ResourceFinderType { get }
}
extension Resource {
static var localObjects: ResourceFinder<Self> {
return ResourceFinder()
}
}
public protocol ResourceFinderProtocol {
associatedtype ResourceType
func all() -> [ResourceType]
}
struct ResourceFinder<T:Resource>: ResourceFinderProtocol {
func all() -> [T] {
return []
}
}
struct Model: Resource {}
Model.localObjects.all()
Run Code Online (Sandbox Code Playgroud)
关于这里可能发生什么的任何想法?
编辑:
正如亚历山大指出的那样,即使我把电话分成:
let localObjects = Model.localObjects
let allObjects = localObjects.all()
Run Code Online (Sandbox Code Playgroud)
......它仍然在第一行崩溃.