[cell viewWithTag:]的奇怪问题

时间:2011-11-13 17:06:43

标签: iphone objective-c xcode cocoa-touch analyzer

我刚刚分析了我的整个iPhone应用,并得到了逻辑错误

UILabel *first_label = (UILabel *) [cell viewWithTag:1];
UILabel *second_label = (UILabel *) [cell viewWithTag:2];

[first_label setText:@"text"];
[second_label setText:@"text"];

NSLog(@"%@", first_label); // it exist
[first_label setFrame:CGRectMake(first_label.frame.origin.x, 10, 10, 10)];

我遇到了这个问题:

  

消息'frame'的接收者是nil并返回一个'CGRect'类型的值,它将是垃圾

如果我改变:

[first_label setFrame:CGRectMake(first_label.frame.origin.x, 10, 10, 10)];

[first_label setFrame:CGRectMake(10, 10, 10, 10)];
他很高兴。这是正常的吗?我可以毫无问题地获得标签,我可以在任何地方使用它,但是当我试图获得它的框架时它会说出这个问题。你有想法吗?

1 个答案:

答案 0 :(得分:2)

分析器只看到你的代码中没有添加带标记1的视图的地方,这就是为什么

UILabel *first_label = (UILabel *) [cell viewWithTag:1]; 

可能会返回零。只需在那里设置断点并检查返回值。如果它不是零,那么分析器可能不会理解代码中的某些内容,因为它也不是完美的。