我有一个NSURLSessionDownloadTask扩展,在此扩展的内部,我使用Objective C Associated Objects创建了一个名为“ id”的存储属性。当我尝试设置属性时,出现“无法识别的选择器发送到实例”的信息。这是我的代码如下:
extension NSURLSessionDownloadTask {
private struct AssociatedKeys {
static var id: String?
}
var id: String? {
get {
return objc_getAssociatedObject(self, &AssociatedKeys.id) as? String
}
set {
if let newValue = newValue {
objc_setAssociatedObject(self, &AssociatedKeys.id, newValue as String?, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
}
}
稍后的;
let task = session.downloadTaskWithURL(url)
task.id = identifier
我无法完全解释它,但问题似乎是session.downloadTaskWithURL(url)
返回某个内部子类的实例__NSCFLocalDownloadTask
。
如果您将扩展名定义为的扩展名,NSURLSessionTask
而不是NSURLSessionDownloadTask
extension NSURLSessionTask { ... }
然后它在我的测试中起作用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句