【问题标题】:definition conflicts with previous value - Xcode 6.3.2定义与以前的值冲突 - Xcode 6.3.2
【发布时间】:2026-01-08 23:30:01
【问题描述】:

我正在 swift 中开发一个 iOS 应用程序,其中 socket.io 库类是用 Objective C 编写的。

当我将 Xcode 更新到 6.3.2 时,我遇到了很多错误

@protocol SocketIODelegate <NSObject>
@optional
- (void) socketIO:(SocketIO *)socket didReceiveMessage:(SocketIOPacket *)packet;
- (void) socketIO:(SocketIO *)socket didReceiveJSON:(SocketIOPacket *)packet;
- (void) socketIO:(SocketIO *)socket didReceiveEvent:(SocketIOPacket *)packet;
- (void) socketIO:(SocketIO *)socket didSendMessage:(SocketIOPacket *)packet;
- (void) socketIO:(SocketIO *)socket onError:(NSError *)error;
- (void) socketIO:(SocketIO *)socket onFailWithError:(NSError *)error;
@end

当我在 swift 类中实现这些委托方法时,我得到“定义与以前的值冲突

swift中实现的委托方法如下:

func socketIO(socket: SocketIO!, onFailWithError error: NSError!) {}

func socketIO(socket: SocketIO!, onError error: NSError!){}

func socketIO(socket: SocketIO!, didReceiveEvent packet: SocketIOPacket!) {}

如何解决这个问题?

【问题讨论】:

  • 显示已实现的委托方法。
  • @Droppy 请检查..我已经编辑了问题。
  • 这是一个正式的协议吗?在哪种情况下你不应该使用override
  • 是的,它是一个正式的协议
  • 我可能对override 位感到困惑;我只在 Xcode 7 beta 下真正使用过 Swift 2.0。

标签: ios objective-c swift xcode6.3.2


【解决方案1】:

使用 Xcode 6.3.2 并实现委托方法对我来说效果很好。

在这里阅读此 SO 问题后,我只能重现您提到的错误消息:Unable to overload function in viewDidLoad() in swift

这确实无法为我编译 定义与以前的值冲突

func whatever() {
    func socketIO(socket: SocketIO!, onFailWithError error: NSError!) {}

    func socketIO(socket: SocketIO!, onError error: NSError!){}

    func socketIO(socket: SocketIO!, didReceiveEvent packet: SocketIOPacket!) {}
}

所以尝试将委托方法的实现移出另一个函数,希望这也是你的问题。

【讨论】:

    最近更新 更多