您好我的项目是基于ARC的,我正在使用UINavigationController在ViewController之间进行转换。我正在使用分析器来分析场景背后发生的事情。我注意到,当我按下一个ViewController时,它会为所有组件分配内存,当我弹出它时,它不会释放分配的内存。
由于我使用ARC,因此我无法实现dealloc或释放任何组件。我已经详细分析过,我的项目中没有内存泄漏。
我没有使用任何强大的属性来推送viewController。以下是我推动ViewController的方法。
viewController *obj = [[viewController alloc] init];
[self.navigationController pushViewController:obj animated:NO];
有任何线索发生了什么? 我该怎么做才能释放我消耗的记忆。 请指教
答案 0 :(得分:0)
您的描述表明您有一个保留周期,这会导致对象无法解除分配。保留周期的典型来源是通过加载NIB文件(通常声明为IBOutlet
)分配的属性。
打破它们并释放对象的两种策略:
将属性声明为weak
:
@property (nonatomic, weak) IBOutlet UILabel *statusLabel;
在nil
中将属性设置为viewDidUnload
:
- (void)viewDidUnload
{
self.statusLabel = nil;
[super viewDidUnload];
}