先看如下一段代码:
UILabel *cl_title = [self viewWithTag:101];
cl_title.text = infos[@"total_time"];
UILabel *cl_distance = [self viewWithTag:102];
cl_distance.text = infos[@"distance"];
UILabel *cl_time = [self viewWithTag:103];
cl_time.text = infos[@"time"];
再看下一段代码:
for (UIView *view in self.subviews) {
if (view.tag == 101) {
UILabel *cl_title = (UILabel *)view;
cl_title.text = infos[@"total_time"];
}else if (view.tag == 102){
UILabel *cl_distance = (UILabel *)view;
cl_distance.text = infos[@"distance"];
}else if (view.tag == 103){
UILabel *cl_time = (UILabel *)view;
cl_time.text = infos[@"time"];
}
}
对于这两段代码来说,都是为了查找tag值为101,102,103的label。但是第一段的代码如果父类的tag值也为101,102或103其中一个,那么在查找tag值为101,102,103的子视图的时候第一段就会出问题,它会先从self本身查找,如果self.tag= 101等值,那么UILabel *cl_title = [self viewWithTag:101];获取的label就是self本身,所以你要明确你自己的目的,到底是不是为了查找子视图,所以一定要慎用。