0

我刚刚分析了整个 iPhone 应用程序,我得到了一个Logic Error

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)];

我得到这个问题:

消息“帧”的接收者为 nil,并返回一个类型为“CGRect”的值,该值将是垃圾

如果我改变:

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

[first_label setFrame:CGRectMake(10, 10, 10, 10)];

他很高兴。正常吗?我可以毫无问题地获得标签,并且可以在任何地方使用它,但是当我尝试获得它的框架时,它会说这个问题。你有想法吗?

4

1 回答 1

2

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

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

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

于 2011-11-13T17:29:36.323 回答