Я создал свой протокол, как показано ниже:
import Foundation
protocol ITcpCLient: class {
func OnMessageReceived(_ message: String);
}
Класс, использующий протокол, как показано ниже:
import Foundation
class tcpConnection {
var tcpClientdelegate: ITcpCLient?
init(client: ITcpCLient) {
self.tcpClientdelegate? = client
if self.tcpClientdelegate == nil {
print("tcpClient Delegate is nil!")
}
}
func trigger() {
tcpClientdelegate?.OnMessageReceived("From Trigger")
}
}
Мой класс ViewController ниже:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("viewDidLoad!")
let myTcpConnection = tcpConnection(client: self)
myTcpConnection.trigger()
}
}
extension ViewController: ITcpCLient {
func OnMessageReceived(_ message: String) {
print("onMessageReceived")
print(message)
}
}
Вывод: tcpClient Delegate равен нулю!
Если я создаю делегат без знака вопроса, код работает как положено. Но когда я использую необязательный тип, я не могу назначить класс viewcontroller в качестве делегата.