我有一个由更多子阵列组成的数组
我希望将子数组的内容摘要显示在TableView中,并显示每个条目的出现次数。我已经确定最好和最简单的方法是通过NSMutableDictionary作为中间步骤。
我在我的实现中声明了字典
@implementation ReviewViewController
{
NSMutableDictionary *dict;
}
在我的方法中,我初始化并使用它如下:
dict = [NSMutableDictionary new];
[dict setObject:[Observation entryCount] forKey:[observedItem species]];
密钥和对象的交换是故意的,因为它是我想要的计数。我正在使用保留值的事实,但是键会被覆盖,所以如果我将它们交换掉,我就可以免费获得策展。
它有效!但是每次调用该方法时,字典都被重新初始化所破坏,所以我只能输入最后一个东西。其他任何地方都不在范围之内。
如果我将其作为方法名称中的争论传递,我会收到消息“本地声明'dict'隐藏实例变量”。代码已经是一组不可减少的部分,所以
那么,实例化的正确位置在哪里?
我很乐意在这里作出有意义的感谢,但在我能做到这一点之前,我会对这些问题感到愚蠢。
答案 0 :(得分:0)
您通常会在init
方法中对其进行初始化。对于视图控制器,通常如下:
- (id)initWithNibName:(NSString*)nibName bundle:(NSBundle*)bundle {
if ((self = [super initWithNibName:nibName bundle:bundle])) {
dict = [NSMutableDictionary new];
}
return self;
}
我不明白你的意思是“其他地方,它不属于范围。”这是一个实例变量。因此,它属于该类中任何方法的范围。
顺便说一下,我会用下划线前缀命名你的实例变量,例如: _dict
。这是常见的约定,它可以帮助您记住使用它时它是一个实例变量。