我正在使用一对使用指针作为唯一键的函数。我想声明一个常量指针用作键。做这件事最安全和最清晰的方法是什么?声明一个常量指针最清晰的方法是什么?
这里有2点可能的方法,但它们都具有短的缺憾。
自参考指针:
static const void * const propertyKey = &propertyKey; //... objc_getAssociatedObject(object, propertyKey);
缺点:该声明是漫长而可怕的期待!可能容易混淆不知道它的用途的人。 上行链路:一旦你明白它的功能,很难使用。
应引用的静态常量:
static const char propertyKey; //... objc_getAssociatedObject(object, &propertyKey);
缺点:用于当可变必须参照而不是简单地使用,这是很容易错过(但编译器应该指出这一点作为一个类型不匹配)。如果修改声明以便赋值,那么它可能会产生灾难性影响,因为指针的唯一性无法保证。 上行:声明更容易理解。
我不认为这些是立即明显的。有更好的建议吗?
哪些问题是你想解决? – Sebivor 2013-03-19 10:08:43
我问,因为似乎没有任何好处使用静态变量的指针作为关键数组。为什么不使用静态变量? – Sebivor 2013-03-19 10:11:06
@modifiablelvalue因为'objc_setAssociatedObject()'要求键是指向'void'的指针。 – 2013-03-19 10:12:33