我所做的是在这个方法中从 View 中释放任何东西,但我的直觉告诉我我可能做错了。
在大多数情况下,didReceiveMemoryWarning
应该杀掉什么样的资源?
最佳答案
您可以在这里发布任何您可以轻松重新创建的内容。
- 从商店构建或序列化的数据结构。
- 使用过的输入数据(如果您已缓存)
- 如果您缓存了来自网络的数据。
iOS 软件中的一个常见习惯用法是使用惰性初始化。
使用 lazy init 时,您不会在 init 方法中初始化 ivars,而是在检查它是否已经存在后在 getter 中进行初始化:
@interface ViewController ()
@property (strong,readonly)NSString *testData;
@end
@implementation ViewController
@synthesize testData=_testData;
// Override the default getter for testData
-(NSString*)testData
{
if(nil==_testData)
_testData=[self createSomeData];
return _testData;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
_testData=nil;
}
在这种情况下,testData 的内存在第一次使用时被初始化,在 didReceiveMemoryWarning
中被丢弃,然后在下次需要时安全地重新创建。
关于ios - didReceiveMemoryWarning 方法中应该释放什么东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24054366/