初始化 NSDictionary

dre*_*gin -5 xcode objective-c nsdictionary uitableview ios

通过这种方式初始化 NSDictionary 有什么区别:

self.myData = [[NSDictionary alloc] init];
[self.myData initWithObjects:objects forKeys:keys];
Run Code Online (Sandbox Code Playgroud)

或者这样:

self.myData = [[NSDictionary alloc] initWithObjects:objects forKeys:keys];
Run Code Online (Sandbox Code Playgroud)

因为我问这个问题的原因是第一个不起作用。我是新手,很想知道为什么?

这是我的代码:-

在此处输入图片说明

gna*_*729 5

第一个版本调用 init 两次,在大多数情况下这是一件非常非常糟糕的事情,但对于像 NSDictionary 这样的内置类尤其糟糕。我从来没有尝试过这个,但它应该会崩溃,因为你初始化了一个不可变的字典,第二次尝试初始化会修改它。