【发布时间】:2011-12-24 18:22:47
【问题描述】:
一个简单的问题。
如果我有一个属性和一个用相同名称声明的 ivar:
在 .h 文件中:
(Reminder*)reminder;
@property(nonatomic,strong)(Reminder*)reminder;
在 .m 文件中,如果我使用 ARC,我应该使用 ivar 还是 init 方法中的属性?
- (id)initWithReminder:(Reminder*)reminder_ {
self = [super init];
if (self) {
reminder = reminder_;
}
return self;
}
或者我应该像这样使用该属性来获得自动引用计数的好处:
- (id)initWithReminder:(Reminder*)reminder_ {
self = [super init];
if (self) {
self.reminder = reminder_;
}
return self;
}
我不确定在对象初始化的哪个时间点可以使用点符号访问属性。
【问题讨论】:
-
如果你使用 synthesize(我猜你会这样做)并且你使用现代编译器(我猜你这样做是因为 ios5)你不需要声明 ivar,objective-c 会自动为你。 (这不是您问题的答案,只是一个旁注)。
-
这是一件好事,到目前为止,我一直为属性声明 ivars。是的,我使用默认名称 @synthesize 属性。
-
正要告诉你和@choise一样的事情。而且我相信无论您是否使用该资产,您仍然可以从 ARC 中受益。
-
你甚至不需要
@synthesize
标签: objective-c ios5 initialization automatic-ref-counting reference-counting