Swift – набор делегатов для singleton
У меня есть что-то вроде этого:
class SocketManager { static let instance: SocketManager var socket = Socket() } extension SocketManager: SocketDelegate { func someFunc() { } }
Socket
– это класс, у которого есть собственный protocol
и delegate
protocol SocketDelegate: class { func someFunc() } class Socket { weak var delegate: SocketDelegate? }
Как я могу установить socket.delegate
в SocketManager.instance
?
- могут ли быстрые функции и закрытия соответствовать Hashable?
- Разница между статической функцией и одиночным классом в быстром
- Как вертикально центрировать выровнять * (звезда) в метке или кнопке
- Ошибка компиляции файла SWIFT Facebook при переносе в Swift 3
- Где хранить постоянные значения в быстром?
- Создайте segue и прикрепите его между двумя контроллерами представлений через Swift?
- Функция AppDelegate.swift возвращает ошибки после преобразования в swift 3 (невозможно преобразовать в PFBooleanResultBlock?)?
- Вычислить файл MD5 с помощью Swift в ios
- Пользовательский пин-образ в аннотации в iOS
- Xcode 7.1 с ошибкой iOS 9.2 (не удалось найти образ диска для разработчиков)
- Не удалось согласовать протокол MKAnnotation в Swift
- Alamofire: как обрабатывать ошибки во всем мире
- UIToolBar является прозрачным
Вы устанавливаете другой класс для соответствия протоколу SocketDelegate
и для назначения делегата этому классу. Как только вы это сделаете, SocketDelegate
может вызвать методы делегирования, которые будут переданы классу, которому вы назначили делегат.
Ваши классы будут такими:
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 }