Утечка памяти приложения iPhone из базовых платформ - PullRequest
0 голосов
/ 16 июня 2010

Нормальные ли такие утечки?Это ложные утечки или что-то, что меня должно беспокоить?Инструмент инструментов не дает мне никакой строки кода из моего приложения, кажется, платформы Apple протекают ?! альтернативный текст http://www.freeimagehosting.net/uploads/d50bdb5dec.png

Хорошо, проблемы могут возникнуть только здесь:

  • (void) tableView: (UITableView *) tableView accessoryButtonTappedForRowWithIndexPath: (NSIndexPath *) indexPath{

    DetailViewController * detailViewController = [[DetailViewController alloc] initWithNibName: @ "ProjectDetailView" bundle: [NSBundle mainBundle]];

    Project * project = [projectsArray objectAtIndex: indexPath.row];

    [detailViewController setProject: project];

    [detailViewController setTitle: [имя проекта]];

    [self.navigationController pushViewController: detailViewController animated: YES];

    [выпуск detailViewController];

}

ИЛИ из события viewWillAppear подробного представления:

  • (void) viewWillAppear: (BOOL) animated {

    [super viewWillAppear: animated];

    [projectName setText: [имя проекта]];

    [appDefStatement setText: [project appDefStatement]]*;1036 *

    [projectDesc setText: [project desc]];

    NSMutableArray * theSketches = [[NSMutableArray alloc] initWithArray: [project.sketches allObjects]];

    [self setSketchesArray:theSketches];

    [theSketches release];

    if ([sketchchesArray count] == ​​0) {

    [tView setHidden:YES];  
    

    } else {

    [tView setHidden:NO];
    

    }

}

Ответы [ 3 ]

1 голос
/ 16 июня 2010

Очень мало случаев, когда утечки происходят из исходного кода Apple, поэтому я бы сказал в первую очередь:

  1. Каждый раз, когда вы используете alloc, вам нужно выпустить любой объект, который вы создали напозже, безопасное время
  2. Убедитесь, что все объекты, которые синтезируются в файле .m, освобождаются в вызове dealloc
  3. Прочтите эту полезную (хотя и скучную) статью об управлении памятью: http://developer.apple.com/iphone/library/documentation/cocoa/conceptual/memorymgmt/memorymgmt.html
  4. Просмотрите этот замечательный пример с утечками http://www.mobileorchard.com/find-iphone-memory-leaks-a-leaks-tool-tutorial/

PS Без публикации вашего кода мы можем только строить предположения ... вы получите лучшие ответы, отправив подозрительный код.

0 голосов
/ 16 июня 2010

Я думаю, что это ложные утечки. Одна из утечек даже обнаруживается для строки кода, взятой из документации Apple (строка из cellForRowAtIndexPath, которая пытается извлечь ячейку многократного использования). Так что я думаю, что инструмент Leaks не идеален. Я проверял свой код несколько раз и убедился, что я освобождаю все, что было выделено / скопировано / сохранено / mutableCopied и т. Д. И т. Д.

0 голосов
/ 16 июня 2010

Хотя возможно, что у некоторых яблочных кодов есть утечки, тот факт, что вы видите утечку, не означает, что утечки действительно есть.Например, может случиться так, что вы выделите что-то из фреймворка Apple, а затем не выпустите должным образом.

Надеюсь, это поможет.

Привет

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