自定义初始化程序中的变量未更改

我正在尝试在初始化UINavigationController子类的实例时在swift中设置变量值。 代码如下所示:

private var initWithRootViewController = false init() { super.init(rootViewController: contentVC) initWithRootViewController = true } init(parameters: OAuth2Parameters) { initWithRootViewController = true super.init(rootViewController: contentVC) initWithRootViewController = true //defer { initWithRootViewController = true } } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) //initWithRootViewController = true } override func viewDidLoad() { super.viewDidLoad() if !initWithRootViewController { setViewControllers([contentVC], animated: false) } } 

问题是在我的自定义初始化程序( init(parameters: OAuth2Parameters) )中, initWithRootViewController的值永远不会更改。 我甚至试图在代码中显示的super.init调用之前和之后设置它,并在初始化之后设置它(注释defer行)。 两者都不起作用。 我还尝试在Xcode中清理(并清理构建文件夹)并重置模拟器。

我通过设置断点检查了initWithRootViewController的值。 我发现在自定义初始化器中,属性将值更改为true ,但是一旦它超出初始化器的范围(当调用init(nibName...) ),该值将显示为false并且它保持不变检查时如果我更改了init(nibName...)的值,那么它已正确设置。 为什么我不能在自定义init方法中更改变量的值?