我正在使用一对使用指针作为唯一键的函数。我想声明一个常量指针用作键。执行此操作的最安全和最清晰的方法是什么?
这里有 2 种可能的方法,但这两种方法都有缺点。
自引用指针:
static const void * const propertyKey = &propertyKey; //... objc_getAssociatedObject(object, propertyKey);
缺点:声明很长而且看起来很吓人!很容易让不知道它的用途的人感到困惑。好处:一旦你理解了它的作用就很难使用它。
应该引用的静态常量:
static const char propertyKey; //... objc_getAssociatedObject(object, &propertyKey);
缺点:使用时必须引用变量而不是简单地使用,这很容易错过(但编译器应该指出这是类型不匹配)。如果修改声明以便分配一个值,那么它可能会产生灾难性的影响,因为不再能保证指针的唯一性。好处:声明更容易理解。
我认为这些都不是显而易见的。有更好的建议吗?