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
插入套接字
类:-)