Edit2: #import言語ではなく、@classを持つようにすべてのヘッダーを再構築しました。すべての.mファイルに#importが追加されました。ここに掲載されている問題は修正されたようです。現在、いくつかのBAD ACCESSエラーがありますが、それはすべて同じ根本的な問題である可能性がありますが、この症状は解決されています
編集:「インポートループ」と呼ばれるものについて知りました。私はこれが問題であることを調査しています。誰かがこれについて何か情報を持っているなら、私に知らせてください。
無関係な変更が不可能なエラーを引き起こしています-プログラムの他の場所に何か深いものや間違いがあると思いますが、これが事実であることを確認したいと思います。3つのエラーがあり、別のXcodeプロジェクトでプログラムを再構築しました。私はいくつかのコード例を持っていますが、心配しないでください-それらは(ほとんど)ヘッダーファイルです
エラー1
#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "PixelSprite.h"
#import "HUDLayer.h"
#import "PixelCharacter.h"
/*typedef enum
{
GameSceneLayerTagGame = 1,
GameSceneLayerTagHUD
}GameSceneLayerTags;*/
@interface GameLayer : CCLayer {
}
@property (assign,readwrite) CGPoint heroStartPoint;
@property (nonatomic, retain) CCTMXTiledMap *tileMap;
@property (nonatomic, retain) CCTMXLayer *background;
@property (assign, readwrite) NSInteger scrollSpeed;
@property (assign, readwrite) PixelCharacter *heroCharacter;
上記の行にはコンパイラエラーが含まれています:不明なタイプ名'PixelCharacter'。スペルミスがないことを私は知っています。念のため、クラスとヘッダーファイルの名前をコピーして貼り付けることもできます。
+(GameLayer *) sharedGameLayer;
-(id) init;
@end
エラー2
#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "HUDButton.h"
@interface HUDLayer : CCLayer {
}
@property (readwrite,assign) CCArray* buttonsArray;
// Working with the buttons
-(void) addHUDButtonOfType:(NSString*)type inSlot:(int)slot;
-(void) addHUDButtonOfType:(NSString*)type;
-(void) removeHUDButton:(HUDButton*)button;
上記の行にはコンパイラエラーが含まれています:予期されたタイプタイプは明確に投稿されているため、これは意味がありません
-(void) removeHUDButtonOfType:(NSString*)type;
-(void) removeAllButtons;
-(void) buttonsQuery;
@end
エラー3
-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
// Get touch location
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
// Verify that touch is on button
BOOL isTouchHandled = CGRectContainsPoint([buttonSprite boundingBox], location);
if (isTouchHandled) {
[buttonSprite setColor:ccRED];
SEL selector = NSSelectorFromString(actionMessage);
GameLayer* layer = [GameLayer sharedGameLayer];
PixelCharacter* heroCharacter = [layer heroCharacter];
上記の行には、コンパイラの警告が含まれています。「PixelCharacter*」を初期化する互換性のないポインタ型と「int*」型の式
[heroCharacter addToDoQueue:selector];
}
return isTouchHandled;
}