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

Jus*_*kva 15 c objective-c key-value-observing void-pointers

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

static void *aContext = &aContext;
Run Code Online (Sandbox Code Playgroud)

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

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

Jon*_*han 1

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