Gus*_*osa 11 generics protocols swift swift2
我正在开发一个使用Swift 2和Xcode 7.3的项目,并面临一个我无法理解原因的错误.
我创建了一个名为Resourcea associatedtype和a static var的协议.
在它的扩展中,我正在尝试创建static vargetter 的默认实现,其中类型是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)
......它仍然在第一行崩溃.
| 归档时间: |
|
| 查看次数: |
505 次 |
| 最近记录: |