我想实现一个接受某种类类型的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 ×1