我正在尝试使用tableView启动一个新的viewController但我不断收到EXC_BAD_ACCESS错误。
·H
#import <UIKit/UIKit.h>
@interface GeneralInfoViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@end
的.m
@interface GeneralInfoViewController ()
@end
@implementation GeneralInfoViewController
{
NSArray *tableData;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
self.title = @"Allmänna uppgifter";
[super viewDidLoad];
// Initialize table data
tableData = [NSArray arrayWithObjects:@"Egg Benedict", @"Mushroom Risotto", nil];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [tableData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
return cell;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)dealloc {
[super dealloc];
}
- (void)viewDidUnload {
[super viewDidUnload];
}
@end
我在return [tableData count];
方法的numberOfRowsInSection
行上获得了例外,但我认为该问题与我在viewDidLoad
和{{{{}}}中启动viewController的方式有关1}}但我无法弄清楚它是什么。
我尝试将initWithNibName
与viewDidLoad
交换,但这只会产生不同的错误。
提前致谢!
答案 0 :(得分:2)
您已使用便捷方法初始化tableData(即没有allo / init / retain)。因此阵列将自动释放。
尝试使用
tableData=[[NSArray alloc] initWithObjects:...];