我有一个带有标量 ivars 的 UIViewController。我想知道当控制器收到内存警告时会发生什么。
testBool 将保持不变或将被重置?
类.h
@interface myView : UIViewController
{
BOOL testBool;
}
我有一个带有标量 ivars 的 UIViewController。我想知道当控制器收到内存警告时会发生什么。
testBool 将保持不变或将被重置?
类.h
@interface myView : UIViewController
{
BOOL testBool;
}
当您收到内存警告时,您需要对其做出反应。系统会尽力帮助您(释放 VC 的视图并在需要时再次调用 loadView / viewDidLoad),但您需要处理好所有对象。
说到对象..如果你定义“BOOL *”这将是一个指针..我不认为你真的想要这个(你需要分配一些内存并将这个内存地址分配给testBool,这样你就可以访问真正的标量*testBool = YES/NO 的值并在 [self dealloc] 上释放此内存)。
通常,可可内存管理仅适用于 OBJECTS。如果你乱用指向标量的指针,你必须自己处理内存(取消)分配。您应该使用标量 ivars 或 NSNumber 之类的 Foundation-Types。如果您使用 ARC,您甚至不必太在意内存管理(保留/释放)。只有当您收到内存警告时,您才应该分配nil
给变量(ARC 将处理内存管理)。
不,它不会被释放,当你收到警告时,只是
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
它被称为。这告诉你你的类占用了很多内存,所以你应该释放一些你不使用的东西。
但是如果你收到一些内存警告,就会调用 dealloc 并且你的 var 肯定会消失。