Expected specifier-qualifier-list before xxx errorなエラーが発生した場合の対処方法です。
※「xxx」には実際のコード内の文字列が入ります
エラーの直接の意味としては、「xxx」という文字列の前に、指定子・限定子(例えばクラス名やintなどの型限定子)がいるんじゃないの?というものです。
このエラーに至るストーリー例:
1. ヘッダファイルのimportし忘れ
2. 「xxx」という名前のクラス/型定義が見つからない
3. 「xxx」がよくわからない文字列だけど変数かな?
4. 「xxx」の前にとりあえず型指定してよ(エラー表示)
ちょっとした関係なさそうなミスでも、このエラーが出ることがあるので、たまにハマります。
原因として実際にあったこと:
・ヘッダファイルの import し忘れ
・ビルド時のデバイス指定を、本来「Device」でしかビルドできないプロジェクトに対して、「Simulator」にしていた
・ClassA.h と ClassB.h で循環importしていた(下の例参照)
ClassA.h
#import "ClassB.h" ...
ClassB.h
#import "ClassA.h" //BUILD ERROR!! ...
※この場合、どちらかのimport文が必要ないようにコードを書き換え(例えばdelegateの利用等に置き換える)、import文を削除するようにします。
1 件のコメント:
@class クラス名;
でクラスだと教えてやってもいいかも
コメントを投稿