所以在指南中说:
对于仅在iOS上运行的代码,首选使用自动合成的实例变量。
合成实例变量时,请使用@synthesize var = var_;因为这可以防止意外调用var = blah;当self.var = blah;是打算。
// Header file
@interface Foo : NSObject
// A guy walks into a bar.
@property(nonatomic, copy) NSString *bar;
@end
// Implementation file
@interface Foo ()
@property(nonatomic, retain) NSArray *baz;
@end
@implementation Foo
@synthesize bar = bar_;
@synthesize baz = baz_;
@end
问题是,这仅适用于公共变量还是私有?它在文档中并不是很清楚,但是想对“为什么”这只仅仅是针对公共或私人的问题有所了解?我认为这对所有公共/私人都有意义,所以你不要搞砸ivars和使用财产
答案 0 :(得分:1)
我认为所讨论的变量是公开的还是私人的并不特别重要。使用不同名称进行合成的做法使您在直接访问变量时显式,而不是使用生成的访问器方法。
也许你提出的问题背后有一个不同的问题:我是否应该通过访问者或直接访问私有ivars?我认为大多数熟练的iOS开发人员倾向于使用访问者,除非有某些特殊原因不要(表现,避免像KVO这样的副作用)。这样做更具有前瞻性,并允许底层实现的灵活性。以非常小的方式,您编写的是接口而不是实现。
值得指出的是,Clang的默认行为将在未来发生变化,以便默认情况下将属性支持的ivars合成为_foo
。显然,这些权力应该考虑强调将ivars作为最佳实践。
答案 1 :(得分:0)
我很确定这很大程度上取决于个人偏好,所以这是我的,因为它们的价值:
我同意保罗。这种一致性是你的朋友,但对我来说,区别也是朋友。