Cocoa 既然我可以使用KVC,为什么还要创建访问器方法呢?

Cocoa 既然我可以使用KVC,为什么还要创建访问器方法呢?,cocoa,key-value-coding,Cocoa,Key Value Coding,我正试图让我的头脑围绕着“键值编码” 本文档介绍了NSKeyValueCoding非正式协议,该协议 定义一种机制,允许应用程序访问 通过名称(或键)而不是直接通过 调用访问器方法或作为实例变量 几乎没有什么事情让我困惑 访问器方法会自动为属性生成,并提供一些好处,如内存管理、自定义验证等。当我们在没有访问器方法的情况下访问属性时,正如Apple doc所说,这是否意味着我们正在失去访问器方法的好处 如果KVC非常好并且减少了代码,为什么我应该使用访问器方法,或者为什么访问器方法仍然存在 我从

我正试图让我的头脑围绕着“键值编码”

本文档介绍了
NSKeyValueCoding
非正式协议,该协议 定义一种机制,允许应用程序访问 通过名称(或键)而不是直接通过 调用访问器方法或作为实例变量

几乎没有什么事情让我困惑

  • 访问器方法会自动为属性生成,并提供一些好处,如内存管理、自定义验证等。当我们在没有访问器方法的情况下访问属性时,正如Apple doc所说,这是否意味着我们正在失去访问器方法的好处

  • 如果KVC非常好并且减少了代码,为什么我应该使用访问器方法,或者为什么访问器方法仍然存在

  • 我从未在任何教程或书籍中见过使用KVC的GitHub代码。为什么它没有被广泛采用

  • 不,这只是意味着您没有在代码中显式调用访问器。KVC实现为您调用访问器

  • KVC不一定减少代码,而是允许不同的交互方式。它允许更大的运行时灵活性,并允许使用关键路径。你不应该把它看作是一个完全的替代品,只是在某些情况下作为一个合适的替代品

  • 它被广泛使用,您需要寻找对
    valueForKey:
    setValue:forKey:
    (协议的方法-不仅仅是这两种方法)的调用

  • 不,这只是意味着您没有在代码中显式调用访问器。KVC实现为您调用访问器

  • KVC不一定减少代码,而是允许不同的交互方式。它允许更大的运行时灵活性,并允许使用关键路径。你不应该把它看作是一个完全的替代品,只是在某些情况下作为一个合适的替代品

  • 它被广泛使用,您需要寻找对
    valueForKey:
    setValue:forKey:
    (协议的方法-不仅仅是这两种方法)的调用