Objective-C - 正确的init方法

时间:2012-10-05 08:26:09

标签: objective-c cocoa init

我已经将UITableViewCell子类化了,而- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier我正在设置一些实例变量,如下所示:

_image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]]

我没有使用任何访问者,因为Apple建议不要在initdealloc中使用访问者。

到目前为止一切顺利。我的问题是在我设置_image之后我想为图像设置userInteractionEnabledYES。我应该用吸气剂做,还是应该直接使用ivar?

self.image.userInteractionEnabled = YES;

或者

_image.userInteractionEnabled = YES;

使用哪种风格?

3 个答案:

答案 0 :(得分:4)

建议仍然有效:直接在init中使用ivar。如果您曾在该属性上实现自定义访问者(现在或以后,此处或子类化时),您可能会遇到麻烦。

答案 1 :(得分:1)

A third option:将图像分配给局部变量,使用它将其完全设置(例如,userInteractionEnabled),然后将其从局部变量赋值给实例变量。

答案 2 :(得分:-1)

由于这是一个属性值,self.image ...更正确,它将确保发送所有通知,如果还有其他任何观察,则运行该对象。如果您使用_image ...则不会发送任何通知。