Как переменная экземпляра может быть освобождена в UITableViewController - PullRequest
0 голосов
/ 27 февраля 2012

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

Я загружаю массив с данными в методе viewDidLoad UITableViewController. Вот код

- (void)viewDidLoad
{
[super viewDidLoad];    
// Get Data
PANewsListModel *info = [PADataSource getNewsList];
_data = [info.news];

NSLog(((PANewsModel *)[_data objectAtIndex:1]).title);

UIImageView *bkgrd = [[UIImageView alloc]initWithImage:[UIImage imageNamed:BACKGROUND_IMAGE]];
self.tableView.backgroundView = bkgrd;
self.tableView.rowHeight = 100;
}

В вызове NSLog данные доступны.

Но в методе, который заполняет ячейки TableCells, это дает исключение памяти. Вот код

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

    NSLog(@"tableView");
    static NSString *CellIdentifier = @"NewsCellID";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        [[NSBundle mainBundle] loadNibNamed:@"PANewsCellIB" owner:self options:nil];
        cell = tableCell;
        self.tableCell = nil;

        PANewsModel *newsItem = (PANewsModel *) [self.data objectAtIndex:1];

        UILabel *title = (UILabel *)[cell viewWithTag:101];
        title.text = newsItem.title; // This instruction gives EXC_BAD_ACCESS

    }

    [cell sizeToFit];
    return cell;
}

Что может сделать переменную экземпляра для освобождения между этими методами?

ОБНОВЛЕНИЕ: больше информации

Это декларация данных

.h
@property (nonatomic, retain ) NSMutableArray *data;
.m
@synthesize data = _data; 

И класс PANewsModel

@interface PANewsModel : NSObject

@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSString *shortDescription;
@property (nonatomic, retain) NSString *description;
@property (nonatomic, retain) NSDate *date;
@property (nonatomic, retain) UIImage *photo;

-(id) initWithTitle: (NSString *) t 
          shortDesc: (NSString *) s 
        description: (NSString *) d
               date: (NSString *) date 
              image: (UIImage *)image;

@end

1 Ответ

0 голосов
/ 27 февраля 2012

Трудно сказать только по коду, который вы разместили, но вам, вероятно, нужно сохранить объект _data в вашем viewDidLoad.Попробуйте это:

PANewsListModel *info = [PADataSource getNewsList];
_data = [info.news retain];

и обязательно выпустите его по вашему dealloc методу.

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