在iOS上的Objective-C中,使用合成的吸气剂时,“ self.foo”和“ foo”之间的

我已经搜索了许多关于ObjC访问器和综合访问器的问题,但是都没有用。这个问题更像是一个“帮助我解决问题”的问题;我不希望有一个答案,但我希望找专家来论证。


在Cocoa Touch类中,我将编写如下代码(其中soundEffects是合成的NSArray属性):


id foo = [self.soundEffects objectAtIndex:1];

一位同事让我解释一下,为什么上述内容比这行更好:


id foo = [soundEffects objectAtIndex:1];

好吧,从功能上来说,没有什么不同。


我对前者的论据如下:


self.soundEffects 告诉处理该代码的所有其他编码器这是一个iVar,而不是局部范围的变量。


如果需要,可以将自定义逻辑放入soundEffectsgetter访问器中。


在没有具体原因的情况下,在Obj-C工作了一年后,感觉就像做正确的事情。


他接受参数#1和#2是有效的,但也给出了对点:


这不只是代码膨胀吗?


是否应该允许类直接与自己的iVar对话而不必自己调用方法(getter)?


有没有人?


烙印99
浏览 460回答 3
3回答

肥皂起泡泡

自我声音效果通过setter / getter设置/获取实例变量,因此,如果我们想在其值更改时执行一些自定义操作,则该逻辑可以进入其getter / setter。同样根据ios 6,ivar对应于@property(nonatomic)NSArray * propertyName;将会_propertyName所以我想你不能使用id foo = [soundEffects objectAtIndex:1];不再。不过不确定。相反,您应该使用id foo = soundEffects [1];
打开App,查看更多内容
随时随地看视频慕课网APP