我制作了这个简单的程序:
-(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文件来编译列表。
答案 0 :(得分:1)
您必须将实施文件包含在构建目标中。
您可能从其他项目中复制了资源,而忘记在导入对话框中选中复选标记Add to Target
。