weak,strong引发的问题

代码1
    self.myRootViewController = [[MyRootViewController alloc] initWithNibName:@"MyRootViewController" bundle:nil];
    NSLog(@"%@",self.myRootViewController);

    self.navController = [[UINavigationController alloc] initWithRootViewController:self.myRootViewController];

    self.window.rootViewController = self.navController;
    [self.window makeKeyAndVisible];

代码2
    UIViewController *viewController = [[MyRootViewController alloc] initWithNibName:@"MyRootViewController" bundle:nil];
    NSLog(@"%@",viewController);

    self.navController = [[UINavigationController alloc] initWithRootViewController:viewController];

   self.window.rootViewController = self.navController;
    [self.window makeKeyAndVisible];

在编码过程中,上面两段不同的代码结果不同,非常不解,应该是具有相同的执行效果,但是代码1无法显示视图,而代码2可显示视图,最后发现在转换成ARC时,属性声明变成了

@property (weak,nonmatic) MyRootViewController *myRootViewController;

因为weak的原因,造成了赋值后,就调用了 MyRootViewController 类的dealloc, self.myRootViewController依然为空值,所以设置根视图失败,无法正常显示出指定的视图。

你可能感兴趣的:(weak,strong引发的问题)