我正在尝试在后台执行协议扩展方法:
@H_502_8@
@H_502_8@
performSelectorInBackground(#selector(retrieveCategories()),withObject: nil)
@H_502_8@
Argument of `#selector` does not refer to an initializer or method
这是我的协议声明:@H_502_8@
@H_502_8@
@objc protocol DataRetrievalOperations { optional func retrieveCategories() ... }
我的扩展:@H_502_8@
@H_502_8@
extension DataRetrievalOperations { func retrieveCategories() { ... } }
我怎样才能做到这一点?@H_502_8@
解决方法
您无法在协议扩展中添加@Objc方法.您需要扩展继承NSObject和该协议的Class并在其中添加objc函数,如下所示:
@H_502_8@
@H_502_8@
@objc protocol DataRetrievalOperations { optional func retrieveCategories() } class aClass: NSObject,DataRetrievalOperations { func method() { performSelectorInBackground(#selector(retrieveCategories),withObject: nil) } } extension aClass { @objc func retrieveCategories(){ } }
这会奏效.@H_502_8@