проблема утечки на NSUserDefaults и NSMutableArray - PullRequest
1 голос
/ 21 июля 2010

У меня есть утечка в следующем коде:

- (void)viewDidAppear:(BOOL)animated {
//If Home-Theme
    if (themeIndex == 0) {
        NSUserDefaults *pref = [NSUserDefaults standardUserDefaults];
        NSMutableArray *thisArray = [[NSMutableArray alloc] init];
        thisArray = [[pref objectForKey:@"Themes"] mutableCopy];
        [thisArray release];
    }
}

утечка в NSMutableArray. Я пробовал несколько разных способов, но ничего не помогло. Может быть, что-то не так с NSUserDefaults? есть идеи?

спасибо xnz

Ответы [ 3 ]

1 голос
/ 21 июля 2010

Вы выделяете NSMutableArray и изменяете ссылку на другой массив.

Вы, вероятно, хотите что-то вроде этого:

- (void)viewDidAppear:(BOOL)animated {
  //If Home-Theme
  if (themeIndex == 0) {
    NSUserDefaults *pref = [NSUserDefaults standardUserDefaults];
    NSMutableArray *thisArray = [[pref objectForKey:@"Themes"] mutableCopy]];
    // do something with thisArray
    [thisArray release];
  }
}
1 голос
/ 21 июля 2010
NSMutableArray *thisArray = [[NSMutableArray alloc] init];

Это утечка, поскольку вы никогда не выпускаете этот экземпляр, просто назначьте новый в следующей строке.Замените его на:

NSMutableArray *thisArray = [[pref objectForKey:@"Themes"] mutableCopy];
0 голосов
/ 21 июля 2010

Вы выделяете thisArray, а затем перезаписываете ссылку на него изменяемой копией из преф.Либо выполните автоматическое освобождение, либо просто удалите ненужное выделение NSMutableArray

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...