ios - 使用大括号或标准+ dictionaryWithObjectsAndKeys初始化NSDictionary之间有什么区别?

标签 ios nsdictionary

我看到了一个带有NSDictionary的Apple示例代码,已使用@{ value:key }表示法进行了初始化。我使用+dictionaryWithObjectsAndKeys:初始化常量NSDictionary

我的问题是:

生成的两个NSDictionaries之间有什么区别吗?我是否需要担心内存泄漏?我正在使用ARC。

我所发现的只是这个Apple文档,但它与Mac有关,而不与iOS有关。符号是@{ key = value }而不是@{ value:key }

http://developer.apple.com/legacy/mac/library/documentation/LegacyTechnologies/WebObjects/WebObjects_3.1/DevGuide/WebScript/CreatingObjects.html

第二个问题是:使用此方法将应用程序提交到App Store是否安全?还是将其视为“未记录的API”?

谢谢!

最佳答案

我使用的是... +dictionaryWithObjectsAndKeys:…生成的两个NSDictionaries之间有什么区别吗?

编译器使用+[NSDictionary dictionaryWithObjects:forKeys:count:]。因此,“陷阱”是您在这些文字表达式中使用的参数/值不得为nil。使用+[NSDictionary dictionaryWithObjectsAndKeys:]时,遇到nil时输入将停止。将nil传递给文字表达式作为键或值传递给文字表达式是错误的。这可能会更改您的程序(因为通过va_lists创建字典的语义是不同的),但是更严格的语义可能会导致错误检测,而不是其他任何原因。

我是否需要担心内存泄漏?我正在使用ARC。

在某些情况下,您可能需要自动释放池-这取决于您在其中创建的上下文。

使用此方法将应用程序提交到App Store是否安全?还是将其视为“未记录的API”?

您将需要Apple-Clang 4.0(Xcode 4.4)。它与OS X和iOS的所有版本兼容:

http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/ObjCAvailabilityIndex/_index.html

此处有更多详细信息:http://clang.llvm.org/docs/ObjectiveCLiterals.html

关于ios - 使用大括号或标准+ dictionaryWithObjectsAndKeys初始化NSDictionary之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12290466/

相关文章:

iphone - AVAudioRecorder 如何在 iphone 中获得麦克风电平?

ios - 将 Cocos 3.0 类导入 Cocos 2.X 项目的问题

ios - 跨上下文传递 ManagedObject ID

ios - 如何评估 NSPredicate 中的 NSDictionary

objective-c - NSHTTPURLResponse allHeaderFields 区分大小写

ios - NSDictionary - 从返回 JSON 服务中解析项目

arrays - 将字符串转换为字典数组中的 NSDate

ios - 在 ios 中从 jpeg 读取 xmp 元数据

iphone - 重新排列 NSArray 和 NSDictionary 条目

iphone - 为 App Store 和 Enterprise Distribution 构建应用程序