2

Xcode プロジェクトで、ツールsbconstantsを使用して、ストーリーボード識別子から外部定数を作成し、識別子を再利用してきました。

これらの定数のすべての宣言を含むヘッダーをプロジェクトの .pch ファイルに #import し、performSegueWithIdentifier: や instantiateViewControllerWithIdentifier: などのメソッドを呼び出すときにこれらの定数を使用します。プロジェクトは完全に問題なくビルドでき、問題なく実行できますが、Xcode は、見つかったこれらの定数を使用するたびにエラーをログに記録し、「宣言されていない識別子の使用 ...」というメッセージを表示します。

問題をさらに複雑にしているのは、定数がインデックス化されているように見えることです。これは、それらを cmd キーを押しながらクリックすると、定数 .m ファイルで定数の宣言が表示されるためです。さらに、Xcode でこれらの定数が使用されているファイルを開かない限り、Xcode はこれらの定数の使用に関するエラーをログに記録していないようです (つまり、これらの定数を使用するファイルには、ファイルを開くまで、それらに起因するエラーはありません)。編集する)。

定数自体の宣言に実際に問題があるとは思いませんが (アプリが完全に正常にビルドおよび実行されるため)、明らかに Xcode は問題があると考えています。この問題を解決するために、プロジェクトを積極的にクリーンアップし、派生データを削除しようとしましたが、それでも問題は解決しませんでした。他の誰かが以前にこれまたは同様の問題に遭遇し、Xcode に定数を適切に認識させる方法を見つけましたか?

4

2 に答える 2

0

私も同じ種類の問題を抱えていましたが、少し違いがあります。今日、Constants.mという名前の目的の C の空のファイルを作成しまし。.m ファイルで宣言されている App で kConstant を使用しようとしましたが、「宣言されていない識別子 kCrashlyticsId」がスローされ、後で深いコードを掘り下げて解決策を見つけました。

解決策: Constants.mファイルにいくつかの値 (NSString 定数) を追加しました。

.m ファイル

NSString *const kCrashlyticsId = @“somejunktextwhichIdidnotunderstood”; NSString *const kAppName = @“hereIhavemyAppName”;

Constants.hでは、 externキーワードを使用してその定数を参照しました。

.h ファイル

extern NSString *const kCrashlyticsId; extern NSString *const kAppName;

最終的に私の問題を解決します。

派生データの削除、xCode の終了、システムの再起動などを試みましたが、すべてうまくいきませんでした。

このソリューションが他の人に役立つことを願っています。

ありがとう。

于 2015-06-17T06:59:55.600 に答える