当前位置: 首页 > 面试题库 >

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

江航
2023-03-14
问题内容

我目前正在一个主要是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


问题答案:

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

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


 类似资料:
  • 我搜了Swift的书,找不到@同步的Swift版本,请问在Swift中如何进行互斥?

  • 问题内容: 我已经用谷歌搜索,但无法找出什么是等效的。 这是我唯一能找到的(Swift的替代方法responsesToSelector:),但在我的情况下并没有太大意义,因为它检查了委托的存在,我没有委托,我只想检查是否存在新的API在设备上运行时是否返回,如果不是,则返回原先的api版本。 问题答案: 如前所述,在 大多数情况下,您可以使用可选的unwrapper运算符来实现所需的功能。这样,当

  • 问题内容: Swift 1.1包含〜>运算符的声明: 这在Swift中有什么用?它似乎已声明,但未定义任何可利用它的函数。其他开发人员已将其用于响应模式和封送队列之间的封包,但我想知道为什么在标准框架中对其进行了定义。我猜想它可以“保留”一个自定义运算符供开发人员使用,因为它具有最高的优先级。 问题答案: 由于Swift是开源的,我们可以看到将stdlib 包括在内的实际原因:作为Swift 1.

  • 在这个 nodejs 代码中, 那个… “声明变量”和“变量”有什么区别? 当我在谷歌上搜索时,我得到了runtime这个词。 wiki说运行时是计算机程序运行时的一种操作.... 但我不能理解。 第1行,“进程”之后的“:”和“NodeJS.进程”是什么意思? 这是否意味着“进程”等于“NodeJS.process”? 还有第4行,在“__filename”和“string”之后的“:”是什么意

  • 问题内容: 我有一个大型数据库,其中包含有标签的记录,我想删除它们。当然,有一种方法可以创建一个全选,使用和更新数据库的PHP脚本,但这需要很长时间。那么,如何使用简单(或复杂)的MySQL查询来做到这一点? 问题答案: 我不相信仅在MySQL中有任何有效的方法可以做到这一点。 MySQL确实有一个功能,但是它只能替换常量字符串,不能替换模式。您可能会编写一个MySQL存储函数来搜索和替换标签,但

  • 问题内容: 每个Go文件均以开头。 据我了解-这可能是我缺少一些信息的地方- 仅有两个可能的值:该目录的名称位于*或中。如果为,则该目录中的所有其他文件也只能具有。如果还有其他问题,则说明该项目不一致/违反约定。 现在,如果它是目录的名称,那么它是多余的,因为相同的信息也包含在目录的名称中。 如果是,则它是无用的,因为据我所知,没有办法告诉“请构建 所有 软件包”。 *因为换句话说,一个目录就是一