我做了这个简单的程序:
-(void) vPrintAllSubviews
{
[self printAllSubviewsWithDepth:0];
while (false);
}
-(void) printAllSubviewsWithDepth:(NSUInteger) depth
{
UIView * theView= self;
[@"" stringByPaddingToLength:depth withString: @"abc" startingAtIndex:0];
NSString * result =[NSString stringWithFormat:@"%@%@",[@"" stringByPaddingToLength:depth withString: @" " startingAtIndex:0], theView];
PO(result);
NSArray * subViews = self.subviews;
for (UIView * subView in subViews) {
[subView printAllSubviewsWithDepth:depth +1];
}
}
当我打电话给我时:
-[UITableView vPrintAllSubviews]: unrecognized selector sent to instance 0x1faa8c00
但 UITableView 是 UIView 的子类,该类别适用于所有 UIView。事实上,该类别曾经在以前更复杂的项目中运行良好。
那么,为什么 UITableView 不知道它可以访问 vPrintAllSubviews 呢?
它甚至不包含任何编译错误。
如果我查看构建阶段,我看到这张图片表明只有 3 个文件正在编译。嗯...在我的上一个项目中,我不记得曾经需要添加 .m 文件来编译列表。