web-dev-qa-db-ja.com

Xcode「宣言されていない識別子の使用」エラー、コンパイル/実行は問題ありません

ワークフローを妨げる非常に厄介な問題を抱えています。私のプロジェクトでは、「宣言されていない識別子のユーザー」エラーがずっとあります。これらはすべて、単一のクラス、具体的にはテーマクラスを参照しています。インポートで循環参照をチェックしましたが、どれもありませんでした。私は本当に混乱しています。

これがエラーのスクリーンショットです。詳細については、ビルドログにエラーを投稿しますが、何もありません。それは構築して正常に実行されます...

enter image description here

派生データを削除、削除してみました...アイデアはありますか?

44
rnystrom

私は同じ問題を抱えていて、宣言されていない識別子のすべてが私のpchファイルにあるファイルで宣言されていることに気付きました。

これを念頭に置いて、pchファイルから#import行の1つを削除し、再コンパイルしましたが、期待どおりに失敗しました。その後、削除した行を元に戻し、再コンパイルすると、すべての誤ったエラーが消えて正常にコンパイルされました。

上記の解決策が役に立たない場合、この簡単な解決策があなたの一部を助けることを願っています。

85
Newtz

残念ながら、この種のエラーはXcodeでよく発生します。エラーリストを常に自動更新するのは素晴らしいことですが、常にそうとは限りません。このような場合は、Xcodeを再起動することを強くお勧めします。再起動すると、エラーキャッシュがフラッシュされ、問題が解決することが期待されます。

9

このクラスをどのように含めますか?ほとんどの場合、*。pchファイルの代わりに、ヘッダーおよび/または本文に明示的にクラスを含めるだけです。その後、私の場合、このエラーはなくなります。

また、派生データの削除は時々機能します。おそらく最近、設定で場所を変更しましたか。また、派生データにramdiskを使用してからデフォルトに戻すと、このエラーが発生しました。これは最も厄介なケースです-ほとんどすべてのファイルにこのエラーが表示されるためです。

このエラーは、Xcode 4.4では以前のバージョンよりも頻繁に発生するようです。

4
user387184

ライブラリファイルを正しく含めましたか?それを見てください。正しいファイルが含まれていない場合や、UIが見つからないか接続されていない場合、ARCの問題が発生することがあります。

2
Preethi

私にとっての問題は、obj-cからc#へのインターフェイスを処理するUnityInterface.h/mファイルを作成したことです。 UnityInterface.hはすでにUnityによって定義されています。私は自分のUnityInterfaceの名前を_UnityInterfaceに変更しましたが、今ではすべてが機能します。

1

後でこの問題が発生する可能性があり、これらの解決策が見つからない人にこれを投稿するだけです:プログラムがデバッグモードの場合にのみ実行される#ifステートメントでマークされたプラグマがある場合は、明らかにアーカイブ/エクスポートを試みるときに宣言されないようにします。

1
Delimiter

少し遅れて答えるかもしれません。

この問題はごく最近発生しました。これを修正するには、OSを更新してからXcodeを更新します。 Xcodeのみをアップデートしようとしましたが、Xcode 9.4にはOS High Sierra 10.13が必要なため、発生しませんでした。*

ハッピー更新:)

0
Sdembla

同じ問題を経験し、上記のすべての解決策を結果なしで試した他の人にとっては、おそらく私がやったようなことを試してみてください。 iPhoneのUSBケーブルをMacから外して、もう一度ケーブルを接続し直すことで問題を解決しました。その後、再構築し、未宣言の識別子エラーはすべてなくなりました。

0
yunhasnawa

同じ問題がありました。 XCodeを閉じて開くことは役に立ちませんでした。

他のターゲットのエラーをチェックして修正することで解決しました(ユニットテストターゲットに大量のエラーがありました)。また、ヘッダーファイルをhファイルからmファイルに移動しました。しかし、最初のことが重要だったことは確かです。

0
wzbozon

同じエラーが発生しました。私の場合、次のコード行にありました。

- (void)playerItemDidReachEnd:(NSNotification *)notification {
      // some code
  }

私のエラーメッセージは言った:

Use of undeclared identifier 'playerItemDidReachEnd'

この行を.hファイルに追加しようとしました:

- (void)playerItemDidReachEnd:(NSNotification *)notification;

私はそれをきれいにし、Macbookを再起動しましたが、まだエラーが発生していました。

最後に、.hファイルの行を削除しようとすることにしました。次に、それをテキストファイルに貼り付け、コピーして.hファイルに貼り付けました。

今、私は掃除し、VOILA '!!!エラーはもうありません。図を移動します。これはVBAで時々発生します。どういうわけか、コード行に目に見えない書式設定があるようです。だから私はそれがxCodeで起こっているかもしれないと思った。それを切り取り、テキストファイルに貼り付け、テキストファイルを切り取り、元の場所に貼り付けます-私の場合は修正しました。

----更新-----上記が私の回答として投稿されました。申し訳ありませんが、明らかに何か他の問題があります。

クリーニング後-エラーがなくなりました。今、アプリをビルドして実行しようとしました。エラーが戻ってきました!そこで今回は、すべてのテキストを切り取り、テキストファイルに貼り付けた後、クラスファイルを再作成しました。私は.mファイルと.hファイルの両方でそれを行いました。しかし、実行しようとするとエラーが再び表示されるようになりました。ごめんなさい。これは答えではないので、このテキストを完全に削除する方法はわかりません。

アプリをビルドして実行しようとしました。エラーが戻ってきました!

また、角かっこ(})が欠落しているというエラーメッセージもありました。最後に、このメソッドの直前のメソッドを見て、終了ブラケットが欠落していることを確認しました!それでした!

コンパイル時エラー

Use of undeclared identifier '<class_name>'

独自のフレームワークとアプリを開発するときに、この問題に遭遇しました。 Objective-Cコンシューマ-> Objective-C静的フレームワーク

Report Navigatorには明確な説明がありました

umbrella header for module '<module_name>' does not include header '<class_name>.h'

解決策は、単に#import <class_name>.hフレームワークターゲットのアンブレラヘッダーに

0
yoAlex5