gpt4 book ai didi

ios - 使用 ARC 弹出 View Controller 后内存未释放

转载 作者:可可西里 更新时间:2023-11-01 06:15:49 24 4
gpt4 key购买 nike

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

因为我使用的是 ARC,所以我无法实现 dealloc 或释放任何组件。我已经详分割析了,我的项目没有内存泄漏。

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

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

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

最佳答案

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

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

  1. 将属性声明为weak:

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

    - (void)viewDidUnload 
    {
    self.statusLabel = nil;
    [super viewDidUnload];
    }

关于ios - 使用 ARC 弹出 View Controller 后内存未释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17451144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com