【问题标题】:What's the C++ equivalent of the objc_setAssociatedObject/objc_getAssociatedObject?objc_setAssociatedObject/objc_getAssociatedObject 的 C++ 等价物是什么?
【发布时间】:2017-05-22 15:35:49
【问题描述】:

C++11 STL 中是否有与 Objective-C 中的objc_setAssociatedObject/objc_getAssociatedObject 等效或相似的内容?

如果没有,那么有什么方法可以让我在 C++ 中实现相同的行为?

【问题讨论】:

  • 为什么不使用std::mapstd::unordered_map
  • C++ 中没有等价物。 Objective C 对象似乎实际上是一个map<string, property>。 C++ 对象甚至不必在运行时存在。 objc_setAssociatedObjectobjc_getAssociatedObject 直接访问底层地图(如果我理解正确的话)

标签: c++ objective-c c++11 binding


【解决方案1】:

没有。没有任何东西相当于obj_setAssociatedObject

您可以使用静态std::unordered_map,但真正困难的是确保删除拥有的对象会删除关联的对象。如果您不需要它,或者您可以修改拥有的目标代码以拥有它自己的地图,那么您应该没问题。

如果您确实需要在删除拥有对象时删除关联对象,并且您不能更改关联对象的代码,那么我们需要更多您的应用程序的详细信息以提出明智的建议(我建议您再问一个问题而不是更改这个问题)。

【讨论】:

    猜你喜欢
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2010-12-07
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多