我所做的是在这个方法中从 View 中释放任何东西,但我的直觉告诉我我可能做错了。
在大多数情况下,应该在 didReceiveMemoryWarning
中杀死什么样的资源?
最佳答案
您可以在此处发布任何可以轻松重新创建的内容。
iOS软件中常见的习惯用法是使用延迟初始化。
使用惰性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
中,然后在下次需要时安全地重新创建它。