我知道很多人都会问这个,但所有的答案都是特定的应用程序,所以我不明白如何为我的应用程序工作。
tableData = [NSArray arrayWithObjects:@"Chocolate Brownie", @"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;`
}
答案 0 :(得分:7)
不保留ut tableData
变量的原因,并且您已经通过工厂方法分配了它已经自动释放。
@property(nonatomic,retain) NSArray *tableData;
in .m,
@synthesize tableData;
然后使用它:
self.tableData = [NSArray arrayWithObjects:@"Chocolate Brownie", @"Mushroom Risotto", nil];
现在你不会得到任何错误,因为现在保留了tableData。
如果您不使用ARC,请不要忘记在dealloc
中发布它。
答案 1 :(得分:4)
您必须将NSArray声明为属性并将其合成。 在您的班级定义中:
@property (retain, nonatomic) NSArray *tableData;
在实施中:
@synthetize tableData = _tableData;
答案 2 :(得分:3)
好吧,这是一个简单的修复。您在引用“tableData”的每一行上都收到错误,因为它未声明。换句话说,你的应用程序从未被告知“tableData”是什么。
您可以在.h文件中声明“tableData”,它应该看起来像这样......
@interface yourClassName : UITableViewController
{
NSArray *tableData;
}
编辑:如果您只是在此功能中调用此数组,请使用@grasGendarme的答案,如果您希望在整个控制器中使用它,请使用此答案。
编辑2 :关于更新后的问题,请在显示错误的行上进行检查。
此蓝色箭头表示您已在此行的代码中设置了断点。您可以右键单击错误并选择删除断点。