我了解访问属性的setter / getter方法时应该使用[ self setThisValue:@"a"];而不是。thisValue = @"a";但是,在下面的示例中,我可以看到添加自我文档是向iVar属性(而不是局部范围的变量)发送消息,但确实如此在这种情况下还要做什么?@interface CustomController : UIViewController { NSMutableArray *foundList;}@property(nonatomic, retain) NSMutableArray *foundList;@end。[[self foundList] addObject:eachObject]; // I usually write this ...要么[foundList addObject:eachObject];加里。
3 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
如果您具有ivar的已定义属性,则应使用它而不是直接访问ivar。这就允许子类重写setter / getter并做一些与从ivar中获取值不同的事情。
唯一的例外是init方法和dealloc。
牧羊人nacy
TA贡献1862条经验 获得超7个赞
使用
[[self foundArray] addObject:eachObject];
您只需向getter方法添加额外的调用,我认为在大多数情况下这是不必要的。另一方面,除非您实现自己的自定义getter并做一些奇怪的事情,否则此构造的开销很小,因此在我看来,这实际上只是样式问题。(我个人不会在这里使用财产)
慕侠2389804
TA贡献1719条经验 获得超6个赞
使用self.ivar也有一些内存清理问题。尤其是 您保留了其他阶级拥有的财产。然后,您将获得任何新对象,并想要更改对self.ivar = newObject的引用。如果不使用self.ivar,则当newObject也由他人拥有时,它可能具有错误的访问权限。默认的setter会检查引用(如果不是nil),则释放旧值并将新的ivar设置为其新值。今天我在没有对象的情况下使用没有自我的东西,并且陷入了这个问题。简而言之,如果对象是共享的,请使用self.ivar ...
- 3 回答
- 0 关注
- 413 浏览
添加回答
举报
0/150
提交
取消