我有一个错误,我怀疑可能是编译器......我不是专家本人,但我检查了一些与专家完全相同的行为的其他代码,弄明白了。属性以无效地址启动
我设置一个属性作为这样: @interface aViewController()
@property (nonatomic, strong) NSArray *listOfTitles;
@end
@implementation aViewController
@synthesize listOfTitles = _listOfTitles;
- (NSArray *)listOfTitles
{
if (!_listOfTitles)
_listOfTitles = [NSArray arrayWithObjects:@"first", @"second", @"third", @"fourth", nil];
return _listOfTitles;
}
然而,应用程序崩溃(阵列将是更复杂的,并且用于设置textLabel.text性质上的UITableViewCell)。
什么令我困扰,这是NSArray总是有一个无效的地址(0x00000001)。我错过了什么?这不是正确的方式来做懒惰的实例吗?
就像我提到的,在其他项目中,我遇到了与其他类完全相同的东西(使用0x00000001实例化的属性)。这就是为什么我怀疑编译器成为问题。但真的,我全力以赴的解决方案!...
您是否正在编译ARC?如果没有,你没有正确地管理你的内存。如果你是,你如何检查价值观? lldb中存在一个影响查看ivars的错误。 – 2012-03-21 01:48:55
你的头文件中声明了名为_listOfTitles的iVar吗? – lnafziger 2012-03-21 01:49:33
@lnafziger:ivar由'@synthesize listOfTitles = _listOfTitles;'指令创建。 – 2012-03-21 02:10:48