0

我有一个UITableView谁的控制器看起来像这样:

@interface FLWorkspaceViewController : UITableViewController

@property(nonatomic,retain) NSMutableArray* workspaces;

@end

我尝试在另一个控制器中设置该数组:

for(NSDictionary* workspace in workspaces)
        {
            NSLog(@"%@",workspace);
            [workspaceViewController.workspaces addObject:workspace];
        }

        [self.navigationController pushViewController:workspaceViewController animated:YES];

我已经检查了这些值并且它们存在。当我计数workspacesviewDidLoad,它是 0。这是为什么呢?

4

1 回答 1

2

@property语句为您创建指针,但不是实际内容。因为我在你的代码中没有看到它:你alloc initNSMutableArray *workspaces哪里吗?

编辑:初始化workspaces数组的最佳方法可能是在您定义@property. 延迟初始化是可取的。最好将您的@synthesize声明修改为类似 的内容@synthesize workspaces = i_workspaces;,然后您可以像这样编写您的吸气剂:

- (NSMutableArray *)workspaces {
    if (i_workspaces == nil) {
        NSMutableArray *i_workspaces = [[NSMutableArray alloc] initWithCapacity:3];
    }
    return i_workspaces;
}

容量语句只是帮助编译器优化,它不必是精确的。

于 2012-06-10T08:37:56.220 回答