为什么ARC不会在popViewController之后释放内存

wal*_*qvi 39 memory-leaks memory-management uinavigationcontroller ios

我在UINavigationController中推送和弹出ViewControllers.

我正在跟踪我的应用程序的内存消耗.在推送新的viewController时,内存消耗逐渐增加,但是当我使用[self.navigationController popViewControllerAnimated:NO];内存消耗弹出相同的ViewController时,不会减少而是常量.

用户可以多次推送和弹出特定的viewController,这会导致应用程序在RAM中的高内存消耗.

我该怎么做才能优化我的内存消耗?

Sha*_*dul 11

当您关闭视图控制器(或弹出它)时,如果您没有向它发出任何强指针(该控制器由导航控制器或呈现视图控制器保留),它将被释放,因此您通常不需要在创建它并推送或呈现它时有一个指向它的指针).

如果没有其他强有力的指针,它将被释放

  • 虽然正确,但我认为这不是重点.尽管控制器本身已被解除分配,但有时内存使用率即使使用pop也不会降低,就像在问题中一样. (2认同)

Nag*_*ali 4

尽量避免对 IBOutlet 使用强属性。

  • 苹果表示,“直销店通常应该是‘弱势’。” [这里是文档](https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html)。 (4认同)