我是iOS開發人員的新手,我無法找出內存問題。如何才能在UITableViewController中釋放實例變量
我使用UITableViewController的viewDidLoad方法中的數據加載了一個數組。這裏的代碼是
- (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
如何聲明'_data'和'self.data'? – sch 2012-02-26 20:10:54
'_data = [info.news];'語法無效。這是一個錯字嗎? – 2012-02-26 20:15:27
'cell = tableCell; self.tableCell = nil;'就在這裏,它看起來像你將一個對象放在一個ivar中指向另一個指針,然後通過setter去掉剛分配的對象。什麼是'tableCell'? – 2012-02-26 20:15:56