我想相关的属性设置为一个阵列扩展:斯威夫特objc_getAssociatedObject始终为零
private var AssociatedObjectHandle: String = "BlaBLabla"
extension Array {
var emptyIndex:Int {
mutating get {
if let object = objc_getAssociatedObject(self, &AssociatedObjectHandle) {
return object as! Int
}
let index = self.searchEmptyIndex()
self.emptyIndex = index
return index
}
set {
let new = (newValue as NSInteger)
objc_setAssociatedObject(self, &AssociatedObjectHandle, new, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN)
}
}
func searchEmptyIndex() -> Int {
if let arr = self as? [Int] {
return arr.index(of: -1)!
}
return -1
}
}
的objc_getAssociatedObject调用总是返回零!
任何人有任何想法为什么?
我敲我的头有关此最后一小时......
是'searchEmptyIndex' API你的代码吗?你可以在你的问题中加入吗? –
是啊对不起...添加 – YanivH
我假设'searchEmptyIndex'住在你的数组扩展中,对吧?在你的代码中,它在扩展之外。 –