Objective-C 中整数到布尔值的映射

发布于 2024-08-08 00:51:55 字数 208 浏览 3 评论 0原文

在 Objective-C 中,我需要将可变集合整数(单调、不连续、可能变得相当大)与布尔值相关联。最明显的方法就是使用一个带有 NSNumbers 的 NSDictionary 作为键和值。

有没有更好的方法,不需要太多的对象创建?我真的不是在尝试预先优化,而是学习是否有我不熟悉的技术。

该数据对于特定的类实现是私有的,因此不需要与其余的 Cocoa API 集成。

In Objective-C I need to associate a mutable collection integers (monotonic, non-contiguous, could get fairly large) to boolean values. The obvious way is just to have an NSDictionary w/ NSNumbers as keys and values.

Is there a better way that doesn't involve so much object creation? I'm really not trying to pre-optimize so much as learn if there are techniques I'm not familiar with.

This data is private to a particular class implementation, so integrating with the rest of the Cocoa APIs isn't a requirement.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

戴着白色围巾的女孩 2024-08-15 00:51:55

假设您对指针大小的整数感到满意,您可以使用 NSMapTable (还带有 C API) 或 CFDictionary (免费桥接到 NSDictionary)。

或者,当然,您可以使用(非 CF/Cocoa)C 或 C++ 数据结构,但它不会那么干净地与 Cocoa 集成。

Assuming you're happy with your integers being pointer-sized, you can use NSMapTable (also comes with a C API) or CFDictionary (which is toll-free bridged to NSDictionary).

Or, of course, you could use a (non-CF/Cocoa) C or C++ data structure, but it wouldn't integrate with Cocoa quite as cleanly.

所有深爱都是秘密 2024-08-15 00:51:55

将一个标量映射到另一个标量的一般情况,Cocoa 处理得不太好,因为它专注于对象,并且在提供任何内容之前需要包装标量。但就布尔值而言,只有两种可能的映射状态,因此这就开辟了一种非常方便的方法:NSIndexSet。集合中的存在=布尔状态。

The general case of mapping one scalar to another isn't something Cocoa handles that well, because it's focused on objects and scalars need to be wrapped before it has anything to offer. But in the case of booleans, there are only two possible mapped states, so that opens up a pretty handy way of doing it: NSIndexSet. Presence in the set = boolean state.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文