Swift类扩展 – 无法识别的select器发送到实例

在基础类上创build类扩展时,在使用以下命令时,会收到unrecognized selector sent to instanceunrecognized selector sent to instance

 extension NSURLSessionDataTask: Taskable { func isRunning() -> Bool { return state == .Running } } 

错误:

 [__NSCFLocalDataTask isRunning]: unrecognized selector sent to instance 0x7fa93bdc07d0 

我正在尝试创build一个通用任务接口,这样我就可以使用不同types的操作和会话任务,这里有什么我不在这里的东西吗?

许多Cocoa类是“类集群”,这意味着你可能会得到与你所要求的不同的东西。 NSCFLocalDataTask是一个私有类,它看起来像不从NSURLSessionDataTaskinheritance。 尝试移动你的扩展到NSURLSessionTask

为什么会发生这种情况:以“is”开头的Objective-C BOOL属性可能会有所不同。 这可能是你的func作为“running”方法导出到Objective-C,而不是“isRunning”。