0

我在 xxxviewcontroller.m 中有以下代码,temp 是 .h 文件中的 UIImageView 实例变量。

- (IBAction)buttonclicked:(id)sender {

  for (int i=0; i<=100; i++)
   {
     temp = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"sample.png"]];
  }

}

因此,对于 for 循环中的每次迭代,我们应该有一个悬空指针,因为 temp 被重新分配并且之前的 ins。在仪器中,当单击按钮时,我看到内存增加,但它很快又回到方法结束后的状态。这个视图控制器是导航控制器堆栈上的第一个视图控制器。我想检查仪器是否会在泄漏中显示这一点。但事实并非如此。

4

1 回答 1

0

在 ARC 中,如果您为现有变量分配一个新值,它会指向新值,并且以前的值(现在没有所有者)被收集和释放。
例如:
如果我们有一个self.textField.text = @"Rayman"

在此处输入图像描述

如果我们为它分配一个新值作为self.textField.text = @"Mister Dark". 上一个值 ie@"Rayman"在那一刻被释放。这就是为什么您看到在方法结束时,您会看到分配的内存被释放,因为这些内存没有所有者。

在此处输入图像描述

[从这里拍摄的图像]

于 2013-01-10T11:47:27.670 回答