- (void)viewDidAppear:(BOOL)animated
{
[super viewWillAppear:animated];
_datePicker = [[UIDatePicker alloc] init];
_datePicker.datePickerMode = UIDatePickerModeDate;
_datePicker.frame = CGRectMake(70, self.view.frame.size.height ,250,100);
_datePicker.alpha = 0;
[_datePicker addTarget:self action:@selector(saveDate:) forControlEvents:UIControlEventEditingDidEnd];
[self.view addSubview:_datePicker];
}
我试图找出我的“无限内存增长”在哪里,我在我的应用程序中使用ARC。我的应用程序中存在一些内存问题,我正在尝试一一解决它们。
在 2 个 viewController 之间移动时,我可以清楚地看到内存使用量大幅增加,其主要原因是我在这里编写的代码。我做错了什么,如何释放它以及在哪里?
谢谢
最佳答案
viewDidAppear:每次 View 出现时都会被调用(即使 Controller 已经初始化)。因此,每次出现 View 时,您都会分配一个新的 UIDatePicker,而不释放旧的 UIDatePicker。
如果您的 datePicker 被定义为带有“retain”的 @property 那么我会使用
self.datePicker = [[[UIDatePicker alloc] init] autorelease];
通过使用 self.datePicker,您正在调用合成的 setter,它将自动为您释放旧值。
或者,您可以将此初始化移至 initWithNibName: 或 viewDidLoad: ,这样它只会被调用一次。
试试这个,看看它是否有助于你的内存。
(我假设您没有使用 ARC,否则我所说的对您没有真正的帮助)。
关于ios - 由于 UIDatePicker 导致的内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14420345/