2010-06-16 2 views
0

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

Хорошо, что проблемы могут исходить только отсюда:

  • (аннулируются) Tableview: (UITableView *) Tableview accessoryButtonTappedForRowWithIndexPath: (NSIndexPath *) indexPath {

    DetailViewController * detailViewController = [ [DetailViewController alloc] initWithNibName: пакет «ProjectDetailView»: [NSBundle mainBundle]];

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

    [подробноПросмотрПроектпроекта: проект];

    [detailViewController setTitle: [название проекта]];

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

    [detailViewController release];

}

или из viewWillAppear события детального вида в:

  • (пустоты) viewWillAppear: (BOOL) анимированный {

    [супер viewWillAppear: анимированный];

    [projectName setText: [название проекта]];

    [appDefStatement setText: [project appDefStatement]];

    [проектDesc setText: [project desc]];

    NSMutableArray * theSketches = [[NSMutableArray alloc] initWithArray: [project.эскизы allObjects]];

    [self комплектSketchesArray: theSketches];

    [theSketches release];

    если ([sketchesArray число] == 0) {

    [tView setHidden:YES]; 
    

    } еще {

    [tView setHidden:NO]; 
    

    }

}

+0

Опубликуйте свой код. Кроме того, вы анализируете устройство? Иногда симулятор не точен. – rickharrison

+0

Я делаю это на устройстве да. Код довольно длинный и утомительный :). Но в основном я просто использую TableView и панель навигации в качестве моего корневого контроллера, тогда пользователь может выбрать ячейку, которая приведет их к подробному представлению с помощью двух TextFields, TextView и другого TableView. Если пользователь выбирает что-то в этом представлении таблицы, он снова отправляется в подробное представление с помощью TextField и TextView. Я не делаю ничего пугающего с этими текстовыми полями и текстовыми комментариями, у них просто есть «измененное» действие, которое при запуске сохраняет данные на диске через Core Data. –

ответ

0

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

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

Привет

+0

Я понимаю, что просто не вижу, что происходит.Я дважды/три раза проверял, и я, кажется, выпускаю все, что нужно освободить ... –

1

Есть очень мало случаев где утечки исходят из исходного кода 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/

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

+0

Спасибо, я рассмотрю эти статьи. Проблема в том, какой код следует публиковать? Мне нужно будет опубликовать весь код (и он длинный), так как инструменты не указывают мне строку в моем коде, они отображают только строки кода, написанные кем-то другим (т. Е. Apple). –

+0

Я бы начал с кода, который вы написали, с вашими таблицами и текстовыми представлениями. – iwasrobbed

+0

Я добавил код. –

0

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

+0

Я бы не стал слишком долго останавливаться на этом, так как я имел то же самое. Я обнаружил утечки в «AVAudioPlayer», которые являются результатом кода Apple, и я ничего не мог поделать, поэтому лучше всего двигаться дальше. По крайней мере, теперь у вас больше опыта с утечками! – iwasrobbed

Смежные вопросы