Sto lavorando a un progetto con Swift 2 e Xcode 7.3 e affronta un errore che non riesco ancora a capire il motivo.Swift: EXC_BAD_ACCESS chiama un metodo da un tipo generico che implementa un protocollo
Ho creato un protocollo chiamato Resource
che ha un associatedtype
e un static var
di quel tipo.
Dentro la sua estensione, io sto cercando di creare un implementazione predefinita di getter s' il static var
, in cui il tipo è un generico struct
che implementa un altro chiamato ResourceFinderProtocol
.
Compilare tutto bene ma, in fase di esecuzione, quando si esegue l'ultima riga dello snippet di seguito, produce un arresto anomalo EXC_BAD_ACCESS
.
Se faccio il struct ResourceFinder
non generico, funziona senza intoppi.
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()
Qualche idea di cosa può accadere qui?
EDIT:
Come Alexander sottolineato, anche se ho diviso la chiamata in:
let localObjects = Model.localObjects
let allObjects = localObjects.all()
... si blocca ancora in prima linea.
A proposito, 'Model.localObjects' si blocca anche. –