- (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 。我的应用程序中有一些内存问题,我正试图逐个解决它们。
在两个viewControllers之间移动时,我可以清楚地看到内存使用量的大幅增加,其主要原因是我在这里写的代码。我做错了什么,我该如何释放它?在哪里?
由于
答案 0 :(得分:1)
viewDidAppear:每次出现视图时都会调用(即使控制器已经初始化)。因此,每次出现视图时,您都在分配新的UIDatePicker而不释放旧的UIDatePicker。
如果你的datePicker被定义为带有“retain”的@property,那么我会使用
self.datePicker = [[[UIDatePicker alloc] init] autorelease];
通过使用self.datePicker,您将调用合成的setter,它将自动为您释放旧值。
或者你可以将这个初始化移动到initWithNibName:或viewDidLoad:相反,这样只会被调用一次。
尝试一下,看看它是否有助于你的记忆。
(我假设你没有使用ARC,否则我所说的不会真正帮助你。)