gpt4 book ai didi

cocoa - 键值编码和方法调用

转载 作者:行者123 更新时间:2023-12-03 17:07:45 26 4
gpt4 key购买 nike

这是一个关于 Cocoa 良好编程技术的问题。
当你想调用类的一个属性上的方法时,你应该使用 KVC 来获取接收者还是只输入属性的名称?

示例,KVC:

[[self property] myMethod];

示例,简单:

[property myMethod];

谢谢!

最佳答案

Example, KVC:

[[self property] myMethod];

那不是 KVC。 KVC的方式是:

[[self valueForKey:@"myProperty"] myMethod]

如果您在编译时知道该属性,则没有理由这样做;您可以直接询问属性值或 ivar 值。由于 KVO 和(在 Mac 上)绑定(bind)已经实现,没有太多理由直接使用 KVC,因为 KVO 和绑定(bind)会为您使用它。

Example, simple:

[property myMethod];

这不会访问该属性;它访问 ivar。

仅当您向属性的持有者(示例中的 self)发送访问者消息时,您才访问该属性。使用 [self property] 还是 self.property 并不重要,因为它们是等效的;任何一个都是发送给 selfproperty 消息,具有任何暗示的副作用。

这是关键的区别:点击访问器可能会导致副作用,而直接访问 ivar 永远不会。

因此,最佳实践:在所有实例方法中使用该属性(因为您可能想要访问器的副作用),除了 init 方法和 dealloc,其中副作用将是一件坏事。 (作为一般规则,您不应向半初始化或半释放的对象发送消息。异常(exception)情况是,当您明确将该方法注释为 init/dealloc 过程的一部分,因此将其编写为可以安全地在这种情况。)

关于cocoa - 键值编码和方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3327338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com