Утечки памяти в UITableView - PullRequest
1 голос
/ 20 июля 2011

Я использую пользовательские ячейки для заполнения одной из моих таблиц. но всякий раз, когда я прокручиваю вверх и вниз, я вижу, что происходят некоторые утечки, которые указывают на UIKit Lib. Не уверен почему? Для справки я приложил снимок экрана с утечками из прибора Leaks.

Любая помощь приветствуется !! enter image description here

TableView cellForRowIndex:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    NSString *cellIdentifier = [NSString stringWithFormat:@"EditingCell_%d_%d",indexPath.section,indexPath.row];
    EditingTableViewCell *cell = (EditingTableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (!cell) {
        [self.appCellNib instantiateWithOwner:self options:nil];        
        cell = editingTableViewCell;        
        self.editingTableViewCell = nil;
    }

Пользовательская ячейка:

@implementation EditingTableViewCell

@synthesize label,textField,commentField,dateLabel;

#pragma mark -
#pragma mark == Initialization == 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code.
    }
    return self;
}


- (void)setSelected:(BOOL)selected animated:(BOOL)animated {

    [super setSelected:selected animated:animated];
}

#pragma mark -
#pragma mark == Memory Management ==

- (void)dealloc {
    [label release];
    [textField release];
    [commentField release];
    [dateLabel release];
    [super dealloc];
}

1 Ответ

0 голосов
/ 20 июля 2011

Я не уверен, что достаточно информации, чтобы дать точное решение. Тем не менее, я предполагаю, что свойства недостаточно четко определены для использования в раздутых XIB. Например, вы могли определить свойство label как:

// Interface declaration
IBOutlet UILabel *label;

// property 

@property (nonatomic, retain) UILabel *label;

Это неправильно и приведет к утечкам. Правильный способ определения торговых точек:

// Interface declaration
UILabel *label;

// property 
@property (nonatomic, retain) IBOutlet UILabel *label;

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

Надеюсь, это поможет! Приветствия

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