18

そのため、この問題についていくつかの調査を行いましたが、まだ同様のものは見つかりませんでした...

Xcode と Sparrow Framework を使用して Obj-C でゲームをコーディングしています。この時点までシミュレーターで作業してきましたが、すべてうまくいっています。しかし、自分のデバイスで実行するように切り替えると、「NSObject のインターフェイス宣言が見つかりません」、「不明な型名 'NSMutableArray'」など、標準であるはずのあらゆる種類のエラーが発生します。クラスごとにインポートするので、あってはならないと思いますよね?どこかを変更する必要があるのは 1 つか 2 つの行だけのように感じますが、何をどこで変更するかはわかりません。

誰かアドバイスがあれば、とてもありがたいです。:)

編集: エラーが発生する .h ファイルの 1 つのスクリーンショットを次に示します。これは、私が作成した .h ファイルの一部にのみ含まれているようです。http://i.imgur.com/EuQh4.png

4

7 に答える 7

69

これは、UIKit が含まれていないことが原因である可能性があります。

これをヘッダーに追加します。

#include <UIKit/UIKit.h>

また、必ず UIKit フレームワークをプロジェクトに追加してください。(Targets/Build Phases/Link Binary With Libraries/ -- Add を選択 --- UIKit.Framework を追加)

于 2014-11-24T03:02:47.743 に答える
48

ヘッダー ファイルの 1 つに循環参照があるようです。

これは、foo.h #imports "bar.h" および bar.h #imports "foo.h" (または、3 つ以上のヘッダー ファイルのチェーンが円を描いて相互にインポートしている場合) に発生する可能性があり、偽のエラーが発生します。あなたが見ているもののように。

解決策は、.h ファイルにヘッダーをインポートすることを避け、代わりに .h ファイルで外部クラスの @class 参照を使用し、代わりに #imports を .m ファイルに配置することです。したがって、書く代わりに:

#import "SomeClass.h"

.h ファイルに、可能な限り次のように記述します。

@class SomeClass;

.h ファイルで、代わりに #import ステートメントを .m ファイルに入れます。

于 2012-01-25T01:50:07.777 に答える
8

Cocoa または iOS アプリの代わりにこれを試してください。NSObject クラスを継承しているクラスに「Foundation/Foundation.h」を必ずインポートしてください。

于 2015-08-12T21:19:51.653 に答える
4

プロジェクトの派生データを削除してみてください。これは、オーガナイザーのプロジェクトの下で行うことができます。プリコンパイル済みヘッダーが破損している可能性があります。

于 2012-01-24T23:29:44.090 に答える
0

既に使用されているクラス名を使用しないようにしてください。既に Foundation の一部であるクラスの 1 つに「Signal」という名前を付けたときに、同じ問題が発生しました。

于 2012-08-16T20:51:49.940 に答える