Swift 2 ve Xcode 7.3 ile bir proje üzerinde çalışıyorum ve bunun nedenini henüz anlayamadığım bir hatayla karşılaşıyorum.Swift: EXC_BAD_ACCESS protokolu uygulayan bir jenerik türden bir yöntemi çağırıyor
Bu tür bir associatedtype
ve static var
olan Resource
adlı bir protokol oluşturdum. onun uzantısı İçinde
ResourceFinderProtocol
denilen uygulayan bir jenerik
struct
olan
static var
'ın getter, bir varsayılan uygulaması oluşturmak çalışıyorum.
Her şey iyi derlenir, ancak çalışma zamanında, aşağıdaki kod parçasının son satırı yürütülürken, bir EXC_BAD_ACCESS
kilitlenme üretir.
Genel olmayan struct ResourceFinder
yaparsanız, sorunsuz çalışır.
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()
Burada neler olabileceğine dair herhangi bir fikir var mı?
DÜZENLEME:
let localObjects = Model.localObjects
let allObjects = localObjects.all()
... hala ilk satırda çöküyor: Alexander gibi
İçine çağrı bölünmüş olsa bile, dikkat çekti.
aracılığıyla takip edebilirsiniz, 'Model.localObjects' da çöker. –