ios5上的autorelease替代品

时间:2011-10-14 15:25:33

标签: iphone ios uitableview ios5

ios5中自动释放的替代方法是什么?以前,表视图的以下方法可行:

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

    NSUInteger row = [indexPath row];

    static NSString *TableIdentifier = @"TableIndentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:TableIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault 
                                  reuseIdentifier:TableIdentifier]autorelease];
    }

    cell.textLabel.text = [arrAccounts objectAtIndex:row];
    return cell;
}

现在我收到一条消息“ARC禁止”和“自动释放不可用”......这有什么用呢?

3 个答案:

答案 0 :(得分:11)

只需删除自动释放,ARC就能为您完成工作

cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault 
                                  reuseIdentifier:TableIdentifier];

这该死的魔法

答案 1 :(得分:3)

删除自动释放呼叫。 AFAIK编译器足够聪明,可以意识到它应该是自动释放的,并为你合成适当的调用。

答案 2 :(得分:2)

如果您不想对当前文件进行ARC所需的更改,则可以使用该文件的新-fno-objc-arc编译器标志为特定文件禁用ARC。使用新的-fobjc-arc编译器标志启用ARC。如果对某些文件使用手动引用计数更方便,则可以选择在每个文件的基础上使用ARC。更多信息: http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html