4

嗨,我的项目是基于 ARC 的,我正在使用 UINavigationController 在 ViewController 之间进行转换。我正在使用分析器来分析幕后发生的事情。我注意到,当我推送 ViewController 时,它会为其所有组件分配内存,而当我弹出它时,它不会释放分配的内存。

由于我使用的是 ARC,我无法实现 dealloc 或释放任何组件。我已经详细分析过了,我的项目没有内存泄漏。

我没有使用任何强大的属性来推送 viewController。这是我推动 ViewController 的方式。

viewController *obj = [[viewController alloc] init];
[self.navigationController pushViewController:obj animated:NO];

有什么线索吗?我应该怎么做才能释放我消耗的内存。请指教

4

1 回答 1

0

您的描述表明您有一个保留周期,这导致对象未被释放。保留周期的典型来源是通过加载 NIB 文件分配的属性(通常声明为IBOutlet)。

打破它们并释放对象的两种策略:

  1. 将属性声明为weak

    @property (nonatomic, weak) IBOutlet UILabel *statusLabel;
    
  2. 将属性设置为nilin viewDidUnload

    - (void)viewDidUnload 
    {
        self.statusLabel = nil;
        [super viewDidUnload];
    }
    
于 2013-07-03T16:31:04.133 回答