菜鸟教程小白 发表于 2022-12-12 22:11:59

ios - 将 KVO 与自定义键一起使用


                                            <p><p>我很好奇,但是可以使用自定义键(和手动更改通知)来实现 KVO 吗?</p>

<p>例如,我可以这样注册吗:</p>

<pre><code>;
</code></pre>

<p>并像这样发出更改通知:</p>

<pre><code>;
// do something
;
</code></pre>

<p>我在一个小型测试应用程序中尝试了这个,它可以工作,但我很好奇是否有人使用过它或看到它的值(value)。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我同意,如果 key 与属性不对应,则不应使用 KVO。但是,应该注意的是,属性不需要实例变量甚至访问器。您可以完全使用符合 Key-Value-Coding 的方法来实现动态属性。不过,这样的属性只能使用 KVC 访问(例如 <code>-valueForKey:</code> 和 <code>-setValue:forKey:</code>)。</p>

<p>例如,如果您实现 <code>-valueForUndefinedKey:</code>,您可以检查键,如果它与动态或虚拟属性的名称匹配(使用您想要的任何标准),您可以返回适当的值。同样,如果您实现 <code>-setValue:forUndefinedKey:</code>,您可以使该属性可写。</p>

<p>在这种情况下,您不必发出手动 KVO 更改通知。当你调用 <code>-setValue:forKey:</code> 时,KVC 会自动发出这些。但是,如果您更改了一些有效地更改属性值的内部状态,则您必须自己发出更改通知。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将 KVO 与自定义键一起使用,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/23484355/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/23484355/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将 KVO 与自定义键一起使用