0

我做了这个简单的程序:

-(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 文件来编译列表。

在此处输入图像描述

4

1 回答 1

1

您必须将您的实现文件包含到构建目标中。

可能您从另一个项目复制了资源,而您忘记检查Add to Target导入对话框中的复选标记。

于 2013-03-29T07:38:41.947 回答