为什么打电话是个坏主意:
self.dataArray = [NSArray arrayWithObjects:@"user",nil];
如果将dataArray设置为属性,则在初始值设定项中?
由于
答案 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];