初始化一个 NSDictionary
Posted
技术标签:
【中文标题】初始化一个 NSDictionary【英文标题】:Initializing an NSDictionary 【发布时间】:2016-07-06 07:34:45 【问题描述】:这样初始化一个NSDictionary有什么区别:
self.myData = [[NSDictionary alloc] init];
[self.myData initWithObjects:objects forKeys:keys];
或者这样:
self.myData = [[NSDictionary alloc] initWithObjects:objects forKeys:keys];
因为我问这个问题的原因是第一个问题不起作用。我是新手,很想知道为什么?
这是我的代码:-
【问题讨论】:
请发布代码而不是链接到 png 这是因为您分配和初始化字典两次。分配一次,然后设置它的键和值(添加对象)。在您的第二种方式中,您正在分配和初始化对象并使用它设置对象以使其正常工作! 知道了。谢谢你的帮助。 @狮子 【参考方案1】:第一个版本调用了两次 init,这在大多数情况下是一件非常非常糟糕的事情,但对于像 NSDictionary 这样的内置类来说尤其糟糕。我从来没有尝试过,但它应该崩溃,因为你初始化了一个不可变的字典,第二次初始化尝试会修改它。
【讨论】:
我不同意“第二次尝试初始化会修改它”的说法,因为当涉及alloc
/init
时,可变性不是问题。我不明白为什么它被接受为 the 答案,但我希望这是因为回答者的代表数量。
是的,现在我完全理解了这个概念。
兄弟有没有更好的解决方案? @Droppy
但这不是我要问的你没有得到我我已经解决了它,然后通过简单地做:- self.myData=[[NSDictionary alloc]initWithObjects:objects forKeys:keys] ;我只是想问一下区别,我想现在我明白了。@Droppy【参考方案2】:
你可以这样初始化你的字典:
self.myData = @ @"key1" : object1,
@"key2" : object2
// etc.
;
【讨论】:
以上是关于初始化一个 NSDictionary的主要内容,如果未能解决你的问题,请参考以下文章
Java Scanner 没有在一个 string() 中初始化,即使它在另一个中初始化
OneExerciseOne创建一个类,它包含一个int域,一个char域,他们都没有初始化,验证Java执行了默认初始化