Refernce image Im new to protocols, I tried the following implementation to achieve the protocols, but im getting nil value for the protocol object
import UIKit
//MARK: step 1 Add Protocol here.
protocol MyDelegate: class {
   func changeBackgroundColor(_ color: UIColor?)
}
class ViewController: UIViewController {
//MARK: step 2 Create a delegate property here.
    weak var delegate: MyDelegate?
    override func viewDidLoad() {
        super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    //MARK: step 3 Add the delegate method call here.
      delegate?.changeBackgroundColor(UIColor.red)
   }
}
Here I am getting delegate value nil and protocol not getting called.
here is the implementation import UIKit
class HomeViewController: UIViewController, MyDelegate {
func changeBackgroundColor1(_ color: UIColor?) {
    self.view.backgroundColor = color
}
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    callVC()
}
func callVC() {
    let vc = ViewController()
    vc.delegate = self
}
func changeBackgroundColor(_ color: UIColor?) {
    self.view.backgroundColor = color
}
 
     
     
     
     
    