在互联网上浏览并搜索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中,您可以在排序列表中
问题内容: 我正在将我的项目从Objective-c转换为Swift,并且正在使用一个Swift类,我正在尝试在Objective- c类中进行访问。我的问题是,在Objective-C类中不可访问。这是我的速成班: 当我查看文件时,看不到: 当我尝试在我的Objective-c类中使用时,出现编译器错误。 有人知道这个问题吗?如何在Objective-c中访问Swift协议? 问题答案: 您需要