Iphone在初始化程序中调用访问器/属性

时间:2011-01-12 18:42:17

标签: iphone

为什么打电话是个坏主意:

self.dataArray = [NSArray arrayWithObjects:@"user",nil];
如果将dataArray设置为属性,则在初始值设定项中

由于

1 个答案:

答案 0 :(得分:2)

我似乎记得......与属性无关

self.dataArray = [NSArray arrayWithObjects:@"user",nil];

相当于

[self setDataArray: [NSArray arrayWithObjects:@"user",nil]];

所以你要调用存取器-setDataArray:

现在,让我们说 CollegueA 将此类子类化为 ClassB 并覆盖-setDataArray:

CollegueA完全有权期望对于ClassB的实例,她的-init已被调用,并且实例将在调用-setDataArray:之前完成initailzion。即。在她的setDataArray中:方法self已正确初始化。这不是您的示例代码会发生的情况。她的-setDataArray:将在你的-init运行之前从你的-init方法调用。

在您是唯一开发人员的项目中,假设您没有编写一个旨在共享的框架,我说这不是一个主要的担忧。但后来我还是喜欢

dataArray = [[NSArray alloc] initWithObjects:@"user",nil];