2012-05-05 16 views
1

私は単純なゲームを書いています。構造体を使う方がはるかに簡単だと思いました。しかし、私は構造体を必要とするメソッドを宣言することはできません。Objective-Cメソッドで構造体を使用する

Objective-Cメソッドの引数としてstructを使用し、返される構造体のオブジェクトを取得するにはどうすればよいですか?

あなたはまさにあなたのような構造体を使用することができます
//my structure in the .h file 
struct Entity 
{ 
    int entityX; 
    int entityY; 
    int entityLength; 
    int entityWidth; 
    int entityType; 
    bool isDead; 
}; 

//And the methods i'm trying to use 
-(BOOL)detectCollisionBetweenEntity:Entity ent1 andEntity:Entity ent2; 

-(struct Entity)createEntityWithX:int newEntityX andY:int newEntityY, withType:int newEntityType withWidth:int newEntityWidth andLength:int newEntityLength; 
+0

Cのデータ構造を使用する場合は、Cでメモリを管理する方法と、ポインタの仕組みを理解することをお勧めします。このトピックは、SOの質問と回答でカバーするには大きすぎます。あなたの他の選択肢は、Objective-Cに固執することです。これは最初から始めるのが難しいかもしれません。 – pmdj

答えて

3

期待し、あなたの問題は、メソッドの構文であるように思わ:メソッドで

struct Entity 
{ 
    int entityX; 
    int entityY; 
    int entityLength; 
    int entityWidth; 
    int entityType; 
    bool isDead; 
}; 

//And the methods i'm trying to use 
-(BOOL)detectCollisionBetweenEntity:(struct Entity) ent1 andEntity:(struct Entity) ent2; 

-(struct Entity)createEntityWithX:(int) newEntityX andY:(int) newEntityY withType:(int) newEntityType withWidth:(int) newEntityWidth andLength:(int) newEntityLength; 

タイプは括弧にする必要があり、あなたはを参照する必要が

2

構造体は常にObjective-Cのパラメータとして使用されていますが、これは通常、Objective-CではObjective-Cでは使用できません。Entityの代わりにEntityが使用されます。例えばAppleのCGGeometry Reference

struct CGRect { 
    CGPoint origin; 
    CGSize size; 
}; 
typedef struct CGRect CGRect; 

からCGRectは、あなただけのAppleと同じ方法で行うことができ、またはそう

typedef struct CGRect { 
    CGPoint origin; 
    CGSize size; 
} CGRect; 

として行われている可能性がある、あなたの構造体の型を作成する必要がありますあなたのケースで:

typedef struct 
{ 
    int entityX; 
    int entityY; 
    int entityLength; 
    int entityWidth; 
    int entityType; 
    bool isDead; 
} Entity; 

あなたは

を定義できるようにする必要があります
関連する問題