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

Swift中的Java接口或目标C协议等效于什么?

孔硕
2023-03-14
问题内容

在互联网上浏览并搜索Apple提供的书籍后,我一直在寻找新的Swift语言,试图找到Swift中的接口(java)或协议(objective-c)中的等效项。我似乎还是找不到。

有人迅速知道这个组件的名称是什么吗?


问题答案:

Swift中的协议与Objc非常相似,除了您不仅可以在类上使用它们,而且还可以在结构和枚举上使用它们。

protocol SomeProtocol {
     var fullName: String { get } // You can require iVars
     class func someTypeMethod() // ...or class methods
}

遵守协议有些不同:

class myClass: NSObject, SomeProtocol // Specify protocol(s) after the class type

您还可以使用默认(可重写)功能实现扩展协议:

extension SomeProtocol {
      // Provide a default implementation:
      class func someTypeMethod() {
           print("This implementation will be added to objects that adhere to SomeProtocol, at compile time")
           print("...unless the object overrides this default implementation.")
      }
}

注意:默认实现必须通过扩展添加,而不是在协议定义本身中添加-协议不是具体的对象,因此它实际上不能附加方法主体。
将默认实现视为C样式的模板;本质上,编译器复制声明并将其粘贴到遵守协议的每个对象中。



 类似资料:
  • 问题内容: 我正在阅读Apple开发人员页面上的iOS教程。 在我看来,这和几乎具有相同的功能。 两者之间有什么区别吗? 项目中的不同用法? 更新 是的 ,我看过上面的链接,我仍然不知道什么区别之间使用和。当我问这样的问题时,我希望看到有关该主题的简单说明。有时很难从文档中获取所有内容。 问题答案: 本质上,协议与Java接口非常相似,除了: Swift协议还可以指定必须实现的属性(即字段) Sw

  • 问题内容: 我想将Java中的类转换为C#,大部分更改已经完成,但是我不确定这部分。我想转换以下代码行: 我已经试过了: 但是它不能正常工作,因为GetBytes()期望翻倍。我不确定将其转换为双精度是否可以解决问题,所以我想在这里询问。 问题答案: 根据您的编码,您可以执行以下操作: 有关参考,请参见http://msdn.microsoft.com/zh- cn/library/ds4kkd5

  • 问题内容: 我知道Java,现在正在学习Objective-C。Java接口和Objective-C协议之间到底有什么区别? 问题答案: 首先,从Java的一位创建者那里对该主题进行了一些历史性的展望。接下来,维基百科在Objective- C协议中 提供了适度有用的部分。特别要了解的是,Objective- C支持 正式协议 (使用关键字明确声明,相当于Java接口)和 非正式协议 (仅一个或多

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

  • 问题内容: 我有一个排序的对象列表,我想找到一个对象的第一次出现和最后一次出现。在C ++中,我可以轻松使用std :: equal_range(或仅使用一个lower_bound和一个upper_bound)。 例如: 在Java中,似乎没有简单的对等关系?我应该如何与等距离 顺便说一句,我正在使用标准的import java.util.List;。 问题答案: 在Java中,您可以在排序列表中

  • 问题内容: 我正在开发Java程序,我确实需要能够以一定的频率和持续时间播放声音,类似于c#方法System.Beep,我知道如何在C#中使用它,但是我找不到用Java做到这一点的一种方法。是否有等效的方法或另一种方法? 问题答案: 我认为没有办法在便携式2 Java 中用“哔”声播放音乐1。您将需要使用我认为的API …除非找到可以为您简化事情的第三方库。 如果您想走这条路,那么此页面可能会给您