【发布时间】:2017-01-22 13:47:30
【问题描述】:
我在 Xcode 8 中将我的 (macOS) 项目转换为 Swift 3,并在我在 swift 类中实现的几个委托方法中收到以下警告:
Instance method 'someMethod' nearly matches optional requirement of protocol 'protocolName'
我通过几个 NSApplicationDelegate 方法得到这个,比如 applicationDidFinishLaunching 和 applicationDidBecomeActive:
但也适用于tableViewSelectionDidChange 的实现:
我使用代码完成来插入方法签名,并尝试从 SDK 标头中复制它们以排除拼写错误。警告只是不会消失,并且永远不会调用方法。
我在这里错过了什么?
【问题讨论】:
-
只需将第一种方法的
NSNotification更改为Notification,尽管您的tableViewSelectionDidChange实现对我来说编译得很好(无警告)。也许尝试清理你的构建文件夹? -
@Hamish 切换到
Notification没有效果(我相应地调整了问题中的屏幕截图)。我还清理并删除了派生数据文件夹。 -
我在使用 Swift 教程从 Apple 自己的 iOS 开发中复制并粘贴代码时遇到此错误。在我的情况下,这个信息拯救了我:aplus.rs/2016/… 即,手动输入函数名称并让智能感知提供当前正确的参数。