Tom*_*eit 4 methods objective-c notation nsarray
有人可以澄清这里发生的事情.我得到了一个名为:brainModel的类,它又有一个名为:operandStack的NSArray.我只是访问数组发送消息"removeAllObjects"
self.brainModel.operandStack.removeAllObjects;
Run Code Online (Sandbox Code Playgroud)
但是使用点符号它会给我一个警告"未使用属性访问结果 - 不应该使用getter来产生副作用"这究竟是什么意思?
使用这样的嵌套括号语法不会发出警告:
[[[self brainModel]operandStack]removeAllObjects];
Run Code Online (Sandbox Code Playgroud)
这两个工作顺便说一句......它是否与错误使用点符号有关?或者在传递像这样的消息对象时使用点表示法被认为是一种好习惯 - 发送像"removeAllObjects"这样的参数.
removeAllObjects不是财产; 这是一种方法.
使用属性访问表示法是有效的,因为通常使用相同名称的方法访问属性.但是,预计获取属性的值不会更改包含对象的对象(或进行任何其他更改),但情况并非如此removeAllObjects.这些是编译器所指的"副作用".
或许,您可能希望执行此调用:
[self.brainModel.operandStack removeAllObjects];
Run Code Online (Sandbox Code Playgroud)
这得到brainModel属性self,然后operandStack属性self.brainModel,然后调用removeAllObjects它.