Утечки памяти в инструментах - PullRequest
2 голосов
/ 02 августа 2009

Я получаю много утечек в моем коде, но ни одна из них не указывает на какой-либо мой код (все они являются методами UIKit).

Я бегу 3.0.

Может кто-нибудь сказать мне, как я выясняю, откуда происходят эти утечки?

Ответы [ 3 ]

1 голос
/ 03 августа 2009

Будьте осторожны с тем, как вы интерпретируете информацию о том, где происходят утечки. Например, нередко происходит утечка строк-заполнителей - строк по умолчанию, которые выделяются на ранних этапах создания объекта, а затем обычно переопределяются вашим собственным пользовательским кодом. Хотя вы не напрямую не выделяете заполнители, вам нужно нужно правильно обрабатывать переопределение. Другими словами, утечек можно избежать, и они, так сказать, ваша вина.

Однако в SDK есть некоторые утечки. UIWebView определенно немного течет, например.

Не могли бы вы показать нам стек вызовов для утечки? ( Инструменты / Просмотр / Расширенные детали для просмотра стека. )

0 голосов
/ 03 августа 2009

Оказалось акселерометр. Я удалил его, и утечки исчезли.

0 голосов
/ 03 августа 2009

Спасибо за помощь.

Все, что я делаю, загружает UITableView здесь. Но я вызываю класс asyncimageview для загрузки значков и использую класс Singleton для источника данных.

В любом случае, все утечки для каждого типа (т. Е. GSEVENTs ) сообщают точно такую ​​же деталь. Элемент, который не показывает все детали, не сообщает ни о одном из моих классов или методов.

Вот снимки:

текст ссылки

Я где-то читал об ошибках в UIAccelerometer (которые мне нужно использовать), которые могли вызвать проблемы GSEVENT .

Я спарил сотовую связь до минимума, без каких-либо дополнительных занятий (кроме синглтона). Должно быть тогда в синглтоне. Я в значительной степени использовал пример кода TheElements для создания этого класса.

Вот мой cellForRowAtIndexPath теперь (даже с этими колючками, приложение по-прежнему протекает, даже при прокрутке):

static NSString *myCell = @"myCell";
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];

UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:myCell];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:myCell] autorelease];
}
UILabel *l=[[[UILabel alloc] initWithFrame:CGRectMake(10,10,200,16)] autorelease];
l.backgroundColor=[UIColor blackColor];
l.font=[UIFont boldSystemFontOfSize:15];
l.textColor=[UIColor whiteColor];
l.text=[(NSDictionary *)[[News sharedNews].newsArray objectAtIndex:indexPath.row] objectForKey:@"text"];
[cell.contentView addSubview:l];

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