【发布时间】:2012-10-05 19:37:15
【问题描述】:
有人可以分享一些关于在初始化方法或指定初始化程序中使用@property iVars 的最佳实践/代码约定的知识吗?
请看我的例子:
@interface MyClass ()
@property(nonatomic,strong) nsstring *tempString;
@property(nonatomic,strong) NSMutableArray *arrItems;
@end
@implementation ViewController
- (id)init
{
if (self = [super init]) {
//Is this best practice / correct
_tempString = @"";
_arrItems = [[NSMutableArray alloc] initWithCapacity:0];
...
...
//Or this
self.tempString = @"";
self.arrItems = [[NSMutableArray alloc] initWithCapacity:0];
}
return self;
}
@end
关于为什么应该使用其中一个或另一个的任何建议?
谢谢...
【问题讨论】:
-
在您的示例中,我通常会使用属性设置器分配一个值,例如
self.tempString = @"Some Value";。原因是您可能在 setter 中有一些自定义逻辑。例如,也许您的 tempString 设置器想要从电话号码中删除破折号。如果您将值直接分配给 ivar,您将绕过该逻辑。这个想法是,如果你有一个 setter,就使用 setter,除非你看到不这样做的理由。请注意,如果您直接分配给 ivars,您将需要自己管理保留/复制/原子结构(除非被覆盖,否则设置器会处理此问题)。
标签: ios objective-c-2.0