Ios 单例的Swift-set委托

Ios 单例的Swift-set委托,ios,swift,singleton,Ios,Swift,Singleton,我有这样的想法: class SocketManager { static let instance: SocketManager var socket = Socket() } extension SocketManager: SocketDelegate { func someFunc() { } } class SocketManager { static let instance: SocketManager var socket =

我有这样的想法:

class SocketManager {
    static let instance: SocketManager
    var socket = Socket()
}

extension SocketManager: SocketDelegate {
    func someFunc() {
    }
}
class SocketManager {
    static let instance: SocketManager
    var socket = Socket()
    weak var delegate: SocketDelegate?
}

extension SocketManager: SocketDelegate {
    func someFunc() {
    }
}

protocol SocketDelegate: class {
    func someFunc()
}

class Socket: SocketDelegate { // so it conforms to the delegate
    SocketManager.instance.delegate = self
}
Socket
是一个拥有自己的
protocol
delegate

protocol SocketDelegate: class {
    func someFunc()
}

class Socket {
    weak var delegate: SocketDelegate?
}

如何将
socket.delegate
设置为
SocketManager.instance

您可以设置另一个类以符合
SocketDelegate
协议,并将委托设置为该类。完成此操作后,
SocketDelegate
可以调用委托方法,这些方法将传递给您设置委托的类

您的课程将如下所示:

class SocketManager {
    static let instance: SocketManager
    var socket = Socket()
}

extension SocketManager: SocketDelegate {
    func someFunc() {
    }
}
class SocketManager {
    static let instance: SocketManager
    var socket = Socket()
    weak var delegate: SocketDelegate?
}

extension SocketManager: SocketDelegate {
    func someFunc() {
    }
}

protocol SocketDelegate: class {
    func someFunc()
}

class Socket: SocketDelegate { // so it conforms to the delegate
    SocketManager.instance.delegate = self
}

这就是我以前所做的,但是,我正试图通过将它们全部移动到
管理器
类中,并将
委托
移动到外部,使我的代码更干净。@PhamHoan委托变量进入
管理器
类中,您将
管理器.delegate=self
插入
套接字
类:-)