Я работаю над проектом с Swift 2 и Xcode 7.3 и сталкиваюсь с ошибкой, которую я пока не могу понять.
Я создал протокол с именем Resource, который имеет associatedtype и static var этого типа.
Внутри его расширения я пытаюсь создать стандартную реализацию getter static var, где тип является общим 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()
Любые идеи о том, что может происходить здесь?
EDIT:
Как заметил Александр, даже если я разделил вызов на:
let localObjects = Model.localObjects
let allObjects = localObjects.all()
... он все еще падает в первой строке.