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 に答える