Objective-C变量……指向自己?

我在Apple的一些示例代码中发现了这个构造,用于处理键值观察。 添加观察者时,可以添加唯一标识KVO调用的上下文(以void *变量的forms) – 如果您希望多个KVO调用触发相同的操作,则特别有用,因为单个上下文可以避免使用一堆链式或语句来检查所有可能性。 这是用于声明用于上下文的变量的行:

static void *aContext = &aContext; 

它基本上声明了一个引用自身的aContext,为自己分配了自己的内存位置 – 这是一个为KVO上下文创建唯一标识符的绝妙技巧。 除了细节之外,我很好奇这究竟叫做什么(自我指定?圆形指针?还有什么?)以及它除了KVO之外还有什么用处。 我尝试使用谷歌搜索不同的东西,但我无法想出任何完全相同的东西,缺乏适当的术语。 🙂

我肯定会经常使用这个技巧,因为它减少了KVO处理所需的if语句数量,这使它更加优雅。

我认为这过于复杂和令人困惑。 当你想为KVO提供一个独特的上下文时,只需声明它并使用指向它的指针:

 static int kMyObjectPropertyObservationContext; ... [object addObserver:self forKeyPath:@"myProperty" options:0 context:&kMyObjectPropertyObservationContext]; 

我认为最准确的描述是“自引用指针”。