Xcodeにはファイルが見えてるのに、クラスを使おうとすると補完が効かない/別のクラス(別の定義)が参照される場合の対処方法をメモ。
目次
1. ターゲットに含まれていない
Xcode上にファイルがあっても、ビルド対象のターゲットに含まれていないと参照できない。
対処法:
- 問題のファイルをクリック
- 右側の「File Inspector」を開く
- Target Membership にチェックが入ってるか確認
2. クラスのスコープ・アクセス修飾子の問題
internal
(デフォルト)やprivate
だと、別モジュールから見えない。
対処法:
1 |
public class MyClass { // ... } |
または、同じターゲット内にあることを確認する。
3. 同名クラスが別のファイル・モジュールに存在している
別のフレームワークや自作ファイルで同名クラスがある場合、Xcodeがそっちを優先して補完・参照してる可能性あり。
対処法:
- 該当クラス名で Command + クリック して、どこを見に行っているか確認
- 明示的に名前空間を指定する(モジュール名.クラス名)
4. ファイルがコンパイル対象から外れている(Build Phases)
Compile Sources
にそのファイルが入ってないと、ビルドに含まれずクラスが見えないことがある。
対処法:
.xcodeproj
を開くTARGETS > Build Phases > Compile Sources
を開く- 問題のファイルがリストにあるか確認
5. Xcodeのキャッシュバグ/補完バグ
Xcodeはしばしば補完や参照解析がバグる。
この場合は「掃除」するのが手っ取り早い。
対処法:
1 2 3 4 5 6 |
// Xcodeを完全クリーンビルド // Cmd + Shift + K // DerivedData削除 rm -rf ~/Library/Developer/Xcode/DerivedData |
1 |
その後、Xcodeを再起動。
その他の可能性
・Swift PackageやCocoaPodsなどの ビルド構成 に問題がある可能性
・モジュール分割している場合、@objc
や public
をつけて明示的にアクセス可能にする必要あり
コメント