gpt4 book ai didi

ios - didReceiveMemoryWarning 方法中应该释放什么东西?

转载 作者:可可西里 更新时间:2023-11-01 05:01:14 27 4
gpt4 key购买 nike

我所做的是在这个方法中从 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/

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