instantiateViewControllerWithIdentifier不会在闭包内维护实例

时间:2017-03-09 21:42:22

标签: ios swift

我在主控制器中加载以下代码。我已经调试,以确保它没有问题调用WebPortalViewController。

家长控制器A.viewDidLoad()

    let sponsorViewController:UIViewController = storyboard!.instantiateViewControllerWithIdentifier("Child")   
    childViewController.view.setNeedsLayout()
    childViewController.view.layoutIfNeeded()

然而,问题是viewDidLoad函数依赖于执行操作调用

子控制器B.viewDidload()

    let operation = GetActiveSubscriptionOperation()

    operation.getActiveSubscriptionCompletionBlock = { [weak self] (subscription, error) in

      switch (self, subscription, error) {
在直接从UITabController加载视图Controller之前,

self始终为null。如何让getActiveSubscriptionCompletionBlock在关闭中保持self

1 个答案:

答案 0 :(得分:0)

weak被声明为可选,如果不可达,则变量可以是nil。所以在viewcontroller加载之前获取nil是正常的。

对于我来说viewDidLoad不应该依赖于它在viewcontroller的生命周期中执行的函数。