相关疑难解决方法(0)

如何指定非泛型Swift类型应符合协议?

我想实现一个接受某种类类型的Swift方法,但只接受那些符合特定协议的类的实例.例如,在Objective-C中我有这样的方法:

- (void)addFilter:(GPUImageOutput<GPUImageInput> *)newFilter;
Run Code Online (Sandbox Code Playgroud)

哪个GPUImageOutput是特定的类,并且GPUImageInput是一个协议.只有GPUImageOutput符合此协议的类才是此方法的可接受输入.

但是,上面的自动Swift生成的版本是

func addFilter(newFilter: GPUImageOutput!)
Run Code Online (Sandbox Code Playgroud)

这消除了GPUImageOutput类符合GPUImageInput协议的要求,这将允许传入不兼容的对象(然后在运行时崩溃).当我尝试将其定义GPUImageOutput<GPUImageInput>为时,编译器会抛出错误

无法专门化非泛型类型'GPUImageOutput'

我如何在Swift中的参数中进行这样的类和协议专门化?

swift

42
推荐指数
2
解决办法
1万
查看次数

标签 统计

swift ×1