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

Vit*_*nko 43 cocoa nslayoutmanager swift

由于Xcode 6仍然有很多Swift漏洞,我不确定它是一个还是我遗漏了一些东西.我的类采用协议NSLayoutManagerDelegate.但似乎不可能覆盖我需要的方法.我做文件描述:

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

    }
Run Code Online (Sandbox Code Playgroud)

但是我在这里得到错误:方法不会覆盖其超类中的任何方法.我该怎么办?

Ken*_*ses 97

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

  • 这不是一个愚蠢的问题,因为Xcode 6自动完成为我们设置了"覆盖",引起了混乱:-) (17认同)
  • 这是一个耻辱,因为这意味着没有编译时检查确保你有正确的签名...... (7认同)