一尘不染

Swift等同于声明`typedef SomeClass'是什么 MyType`?

swift

我目前正在一个主要是Objective-C的项目中编写一些Swift代码。在我们的ObjC代码中,我们有一个声明为的标头typedef GPUImageOutput<GPUImageInput> MyFilter;。然后,我们可以声明一个@property,它只能是GPUImageOutput实现的子类GPUImageInput

(注意:GPUImageOutput并且GPUImageInput不是我定义的;它们是GPUImage库的一部分)

即使标头是在导入的标头中#import的,我们的Swift代码似乎也无法识别这一点。我试图在Swift中复制声明,但是这些都不是正确的语法:
typealias MyFilter = GPUImageOutput, GPUImageInput
typealias MyFilter = GPUImageOutput : GPUImageInput


阅读 307

收藏
2020-07-07

共1个答案

一尘不染

在Swift 4中,您可以使用新的&符号(在确认UIViewController和UITableViewDataSource的参数示例下面:

func foo(vc: UIViewController & UITableViewDataSource) {
    // access UIViewController property
    let view = vc.view
    // call UITableViewDataSource method
    let sections = vc.numberOfSectionsInTableView?(tableView)
}
2020-07-07