我尝试在后台执行协议扩展方法:
performSelectorInBackground(#selector(retrieveCategories()), withObject: nil)
但是,我收到以下错误消息:
Argument of `#selector` does not refer to an initializer or method
这是我的协议声明:
@objc protocol DataRetrievalOperations {
optional func retrieveCategories()
...
}
我的分机号码是:
extension DataRetrievalOperations {
func retrieveCategories() {
...
}
}
我怎样才能做到这一点?
最佳答案
不能在协议扩展中添加@Objc
方法。您需要扩展继承nsObject和该协议的类,并在其中添加objc
函数,如下所示:
@objc protocol DataRetrievalOperations {
optional func retrieveCategories()
}
class aClass: NSObject, DataRetrievalOperations {
func method() {
performSelectorInBackground(#selector(retrieveCategories), withObject: nil)
}
}
extension aClass {
@objc func retrieveCategories(){
}
}
这是可行的。