由于UIDatePicker导致内存问题

时间:2013-01-20 00:12:03

标签: ios cocoa-touch cocoa

- (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之间移动时,我可以清楚地看到内存使用量的大幅增加,其主要原因是我在这里写的代码。我做错了什么,我该如何释放它?在哪里?

由于

1 个答案:

答案 0 :(得分:1)

viewDidAppear:每次出现视图时都会调用(即使控制器已经初始化)。因此,每次出现视图时,您都在分配新的UIDatePicker而不释放旧的UIDatePicker。

如果你的datePicker被定义为带有“retain”的@property,那么我会使用

self.datePicker = [[[UIDatePicker alloc] init] autorelease];

通过使用self.datePicker,您将调用合成的setter,它将自动为您释放旧值。

或者你可以将这个初始化移动到initWithNibName:或viewDidLoad:相反,这样只会被调用一次。

尝试一下,看看它是否有助于你的记忆。

(我假设你没有使用ARC,否则我所说的不会真正帮助你。)