Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Swift中使用轻量级泛型实现Objective-C方法_Objective C_Swift_Generics_Swift3 - Fatal编程技术网

在Swift中使用轻量级泛型实现Objective-C方法

在Swift中使用轻量级泛型实现Objective-C方法,objective-c,swift,generics,swift3,Objective C,Swift,Generics,Swift3,我必须在Objective-C库的数据源协议中实现此方法 (nullable id<SomeClass>)someMethod; (可空id)someMethod; 我试图用Swift在我的课堂上实现它,特别是AppDelegate,我相信它与签名保持一致 extension AppDelegate: LIBDataSource { @objc func someMethod<T: SomeClass>() -> T? { return

我必须在Objective-C库的数据源协议中实现此方法

(nullable id<SomeClass>)someMethod;
(可空id)someMethod;
我试图用Swift在我的课堂上实现它,特别是AppDelegate,我相信它与签名保持一致

extension AppDelegate: LIBDataSource {
    @objc func someMethod<T: SomeClass>() -> T? {
        return nil // temporary
    }
}
扩展AppDelegate:LIBDataSource{ @objc func someMethod()->T{ 返回零//临时 } } 问题是

  • 事实上,我有一个警告和一个错误。错误表示无法将
    方法标记为@objc,因为它具有泛型参数(下面还显示了警告)
  • 如果我删除
    @objc
    ,警告会说
    非@objc方法“someMethod()”无法满足@objc协议LIBDataSource的可选要求
有没有办法在Swift中实现Obj-C协议的通用Obj-C方法?或者我必须单独使用Objective-C类来完成这个任务吗?

语法

id<SomeClass>
语法

id<SomeClass>

Objective-C对泛型一无所知——这是不可能的。Objective-C对泛型一无所知——这是不可能的。