gpt4 book ai didi

Objective-C:Getter 不应该用于副作用编译器警告

转载 作者:太空狗 更新时间:2023-10-30 04:02:14 28 4
gpt4 key购买 nike

有人可以澄清这里发生的事情吗?我有一个名为:brainModel 的类,它又有一个名为:operandStack 的 NSArray。我只是访问数组,向它发送消息“removeAllObjects”

self.brainModel.operandStack.removeAllObjects;

但是使用点表示法它会给我一个警告“属性访问结果未使用 - setter/getter 不应该用于副作用”这到底是什么意思?

像这样使用嵌套括号语法不会发出警告:

 [[[self brainModel]operandStack]removeAllObjects];

顺便说一下,两者都有效...它与错误使用点符号有什么关系吗?还是在像这样向对象发送消息时使用点表示法被认为是一种好的做法 - 向它发送像“removeAllObjects”这样的参数。

最佳答案

removeAllObjects 不是属性;这是一种方法。

使用属性访问符号是可行的,因为通常使用同名方法访问属性。但是,预计获取属性值不会更改包含该对象的对象(或进行任何其他更改),removeAllObjects 不是这种情况。这些是编译器所指的“副作用”。

您可能希望改为执行此调用:

[self.brainModel.operandStack removeAllObjects];

获取selfbrainModel属性,然后获取self.brainModeloperandStack属性,然后调用removeAllObjects 就可以了。

关于Objective-C:Getter 不应该用于副作用编译器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11972248/

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