Swift no puede llamar al método de protocolo vía delegado

Tengo dos clases Una clase se llamaViewController y la otra clase se llamaTabView.

Mi objetivo es llamar a una función.changeTab() que está dentro de la clase TabView del ViewController.

De alguna manera estoy teniendo problemas porque cada vez que mi delegado estánil.

Aquí está mi código para ViewController:

protocol TabViewProtocol: class {
    func changeTab() 
}

class ViewController: NSViewController {
    // delegate
    weak var delegateCustom : TabViewProtocol?

    override func viewDidLoad() {
        print(delegateCustom) // outputs "nil"
    }

    buttonClickFunction() {
        print(delegateCustom) // outputs "nil"
        delegateCustom?.changeTab() // doesn't work
    }
}

Aquí está mi código para TabView:

class TabView: NSTabViewController, TabViewProtocol {

    let myVC = ViewController()

    override func viewDidLoad() {
        super.viewDidLoad()
        myVC.delegateCustom = self
    }

    func changeTab() {
        print("test succeed")
    }
}

¿Alguien puede explicarme qué estoy haciendo mal? - Soy nuevo en delegados y protocolos ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta