我刚刚分析了我的整个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)];
他很高兴。这是正常的吗?我可以毫无问题地获得标签,我可以在任何地方使用它,但是当我试图获得它的框架时它会说出这个问题。你有想法吗?
答案 0 :(得分:2)
分析器只看到你的代码中没有添加带标记1的视图的地方,这就是为什么
UILabel *first_label = (UILabel *) [cell viewWithTag:1];
可能会返回零。只需在那里设置断点并检查返回值。如果它不是零,那么分析器可能不会理解代码中的某些内容,因为它也不是完美的。