Cocoa Swift协议:方法不会覆盖其超类中的任何方法

Cocoa Swift协议:方法不会覆盖其超类中的任何方法,cocoa,swift,nslayoutmanager,Cocoa,Swift,Nslayoutmanager,由于Xcode 6在Swift上仍然有很多bug,我不确定是它还是我遗漏了什么。 我的类采用协议NSLayoutManagerDelegate。但似乎不可能覆盖我需要的方法。我按照文档描述的方式执行: override func layoutManager(_ aLayoutManager: NSLayoutManager!, didCompleteLayoutForTextContainer aTextContainer: NSTextContainer!, a

由于Xcode 6在Swift上仍然有很多bug,我不确定是它还是我遗漏了什么。 我的类采用协议NSLayoutManagerDelegate。但似乎不可能覆盖我需要的方法。我按照文档描述的方式执行:

override func layoutManager(_ aLayoutManager: NSLayoutManager!,
        didCompleteLayoutForTextContainer aTextContainer: NSTextContainer!,
        atEnd flag: Bool) {

    }
但我在这里得到了一个错误:方法不重写其超类中的任何方法。
我该怎么办?

您正在从协议中实现一个方法,是的,但它不是重写。只需删除
override
关键字。重写是指您的超类也实现了该方法,并且您提供了替换或修改超类实现行为的版本。这不是这里发生的事情。

这不是一个愚蠢的问题,因为Xcode 6自动完成为我们设置了“覆盖”,造成了混乱:-)这是一个遗憾,因为这意味着没有编译时检查来确保签名正确…是的,我认为这是一件坏事,因为没有编译时检查签名是否正确。但是,由于在Swift中所有协议方法都是必需的,如果您没有实现所有必需的方法,您将得到某种编译错误。@DouglasHeriot是的,但是如果您实现协议中定义的方法,但没有实现协议本身,则不会得到警告。