有Swift等于吗?
__attribute((objc_requires_super))
不,没有Swift等价于__attribute((objc_requires_super))。
等效功能,Swift Attributes,不包含此类属性。
Swift inheritance documentation的这个功能将被提及的部分只提到:
When you provide a method,property,or subscript override for a subclass,it is sometimes useful to use the existing superclass implementation as part of your override.
请注意,您可以使用final来防止覆盖函数,因此您可以通过提供由不可覆盖的方法调用的空的可覆盖方法来有效地完成所需的任务:
class AbstractStarship { var tractorBeamOn = false final func enableTractorBeam() { tractorBeamOn = true println("tractor beam successfully enabled") tractorBeamDidEnable() } func tractorBeamDidEnable() { // Empty default implementation } } class FancyStarship : AbstractStarship { var enablediscoBall = false override func tractorBeamDidEnable() { super.tractorBeamDidEnable() // this line is irrelevant enablediscoBall = true } }
子类然后将覆盖可覆盖的方法,无论他们是否调用super还是不重要,因为超类的实现是空的。
正如Bryan Chen注释中的注释所示,如果子类被子类化,则会分解。
我没有声称这种做法在风格上是好的,但这当然是可能的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。