我正在努力理解这一点,并希望有人能帮助我解决这个问题。
我的ViewController中有一个名为回复的属性。在用户单击表中的行之后,由另一个ViewController加载它,并将XML节点传递给新ViewController上的属性。
我有这段代码:
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (replies == nil)
{
replies = [[NSArray alloc] init];
}
if(replies.count == 0)
{
replies = [node elementsForName:@"question"];
}
return replies.count;
}
回复是ViewController上的属性。 NumberOfRowsInSection在加载过程中被调用两次。在第一遍,我可以看到属性填充。在第二个它是空的,并且对replies.count的调用返回“发送到解除分配的实例的消息”错误。
我对此感到困惑 - 因为属性是在第一次传球时设定的,所以当第二次传球发生时我的价值发生了什么变化?这让我疯了......
答案 0 :(得分:0)
确保您的财产保留对回复的强烈参考:
@property (nonatomic, strong) NSArray *replies;
和参考回复如下:
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (self.replies == nil)
{
self.replies = [[NSArray alloc] init];
}
if(replies.count == 0)
{
self.replies = [node elementsForName:@"question"];
}
return self.replies.count;
}