Я работаю над проектом с 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()
... он все еще падает в первой строке.