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

2024-04-03

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

static void *aContext = &aContext;

它基本上是声明 aContext 来引用自身,为自己分配自己的内存位置——这是一个为 KVO 上下文创建唯一标识符的绝妙技巧。抛开具体细节不谈,我很好奇这到底叫什么(自赋值?循环指针?其他什么?)以及除了 KVO 之外它还有哪些其他用途。我尝试用谷歌搜索不同的东西,但我无法想出任何与此完全相同的东西,因为缺乏适当的术语。 :)

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


我认为这过于复杂和混乱。当您想要 KVO 拥有唯一的上下文时,只需声明它并使用指向它的指针:

static int kMyObjectPropertyObservationContext;

...

[object addObserver:self
         forKeyPath:@"myProperty"
            options:0
            context:&kMyObjectPropertyObservationContext];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Objective-C 变量...指向自身? 的相关文章

随机推荐