我在哪里初始化NSMutable Dictionary?
我有一个由更多子阵列组成的阵列我在哪里初始化NSMutable Dictionary?
我想显示一个子数组的内容摘要到一个TableView与每个条目的出现次数。我已经确定最好和最简单的方法是通过NSMutableDictionary作为中间步骤。
我宣布字典我在执行
@implementation ReviewViewController
{
NSMutableDictionary *dict;
}
,并倒在我的方法,我初始化和使用它像这样:
dict = [NSMutableDictionary new];
[dict setObject:[Observation entryCount] forKey:[observedItem species]];
键和对象的交换是经过深思熟虑的,作为其计数我想要。我正在使用值保留的事实,但密钥被覆盖,所以如果我交换他们,我得到免费的curation。
It works !,但每次调用该方法时,字典都会被重新初始化所破坏,所以我只能得到最后输入的内容。任何地方,它都不在范围之内。
如果我将它作为方法名称中的一个参数传递,我会得到消息“本地声明'dict'隐藏实例变量”。该代码已经是一组不可分割的一组部件,所以
所以,哪里是实例的正确位置?
我很想在这里作出我的贡献,作为一个有意义的感谢,但在我能做到这一点之前,我会看起来很愚蠢的这样的问题。
您通常会在您的init
方法中初始化它。对于一个视图控制器,这通常是如下:“在别的地方,它超出范围”
- (id)initWithNibName:(NSString*)nibName bundle:(NSBundle*)bundle {
if ((self = [super initWithNibName:nibName bundle:bundle])) {
dict = [NSMutableDictionary new];
}
return self;
}
我不明白你的意思。这是一个实例变量。因此,它在任何方法的范围内。顺便说一下,我会用下划线前缀命名实例变量,例如: _dict
。这是常用的约定,它可以帮助您记住使用它时它是一个实例变量。
谢谢。与此同时,最简单的地方,ViewDidLoad,做了诀窍,但如果initWithNibName是更传统的。我认为强调只用于强制合成财产。生活和学习,我只是住在两个人。 – aremvee 2013-02-09 20:58:38
'viewDidLoad'并不是一个不好的地方。这完全取决于该对象的生命周期。如果它在'viewDidLoad'中,则每次加载视图时,字典将被初始化为一个新的,空的。这可能是你想要的,或者它可能不是。 – mattjgalloway 2013-02-09 21:04:40
什么在[观察物种]? – Rajneesh071 2013-02-09 11:48:34