0

我有一个由更多子数组组成的数组

我想将子数组内容的摘要显示到 TableView 中,其中包含每个条目的出现次数。我已经确定最好和最简单的方法是通过 NSMutableDictionary 作为中间步骤。

我在我的实现中声明了字典

@implementation ReviewViewController
{
NSMutableDictionary *dict;
}

在我的方法中,我初始化并像这样使用它:

dict =  [NSMutableDictionary new];
[dict setObject:[Observation entryCount] forKey:[observedItem species]]; 

键和对象的交换是故意的,因为它是我想要的计数。我正在使用保留值的事实,但键被覆盖,所以如果我交换它们,我会免费获得管理。

它有效!但每次调用该方法时,字典都会被重新初始化所破坏,所以我只输入最后一个内容。其他任何地方,它都超出了范围。

如果我将它作为方法名称中的参数传递,我会收到消息“'dict' 的本地声明隐藏实例变量”。代码已经是一组不可约的部分,所以

那么,实例化的正确位置在哪里?

我很想在这里做出我的贡献作为一个有意义的感谢,但在我能做到这一点之前,我会因为这样的问题而显得很傻。

4

1 回答 1

0

你通常会在你的init方法中初始化它。对于视图控制器,通常如下:

- (id)initWithNibName:(NSString*)nibName bundle:(NSBundle*)bundle {
    if ((self = [super initWithNibName:nibName bundle:bundle])) {
        dict = [NSMutableDictionary new];
    }
    return self;
}

我不明白您所说的“其他任何地方都超出范围”是什么意思。它是一个实例变量。因此,它在类中的任何方法的范围内。

顺便说一句,我会用下划线前缀命名您的实例变量,例如_dict. 这是常见的约定,它可以帮助您在使用它时记住它是一个实例变量。

于 2013-02-09T11:23:47.267 回答