0

这可能是一个愚蠢的问题,但我是 iPhone 开发的新手,无论如何我有一个NSMutableArray从服务器加载的信息。我试图把这些信息放在一张桌子上。我四处寻找有关如何执行此操作的一些想法,然后遇到了很多人似乎为了执行此操作而使用的这段代码:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [myArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath           *)indexPath
  {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell"];

if (!cell) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"UITableViewCell"] autorelease];
}

cell.textLabel.text = [myArray objectAtIndex:[indexPath row]];
NSLog(@"Cell is %@", [myArray objectAtIndex:indexPath.row]);
return cell;

}

现在我的问题在 if 语句中,它给了我两个关于 autorelease 的错误:在引用计数模式下不可用且不可用,并且 arc 禁止发送 autorelease 的消息,有什么想法吗?谢谢您的帮助

4

4 回答 4

3

您拥有的代码是较旧的代码,仅适用于手动引用计数 (MRC)。较新的项目默认使用自动引用计数 (ARC)。只需删除对的呼叫autorelease,您就会没事的。

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"UITableViewCell"];
于 2013-03-20T01:00:00.587 回答
3

您正在使用自动引用计数,它会为您处理内存管理(大部分情况下)。删除所有对手动内存管理的引用,例如autorelease(and retain, release, 等),应用程序将构建。在下面使用这个:

if (!cell) {

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"UITableViewCell"];

 }
于 2013-03-20T01:00:33.160 回答
1

这是一个简单的教程链接,用于将 NSMutableArray 添加到 tableView...简单教程链接..希望它对您有用。

于 2013-03-20T03:25:23.820 回答
1

这也可以使用免费提供的 Sensible TableView 框架轻松完成。他们有一个叫做 ArrayOfObjectsSection 的东西,你只需将 NSArray 传递给它,它就会自动显示它,以及许多其他东西(包括为你做服务器获取)。

于 2013-03-20T01:39:39.973 回答