了解简单代码示例中的自动引用计数

时间:2015-11-29 15:11:20

标签: ios objective-c uiviewcontroller automatic-ref-counting

我对ARC的了解有限,所以我想更多地了解它。以这个简单的示例代码为例:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    UIViewController *rootViewController = [[UIViewController alloc] init];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    [[self window] setRootViewController:rootViewController];
    [[self window] setBackgroundColor:[UIColor whiteColor]];
    [[self window] makeKeyAndVisible];

    return YES;
}

我的问题是:在整个方法范围内rootViewController会发生什么?我的直觉是:

  1. 我分配并初始化一个UIViewController,所以我拥有该对象,而rootViewController的retainCount为1。
  2. 调用setRootViewController时,rootViewController的retainCount会增加,因此self.window会强烈指向它。 retainCount现在是2。
  3. 当didFinishLaunchingWithOptions返回时,我不再相关,所以我与rootViewController的合约已经结束。方法返回后,retainCount会减少,因为我已经超出了范围。 retainCount为1,self.window拥有rootViewController。

0 个答案:

没有答案