我正在写一个简单的游戏,并认为使用结构会容易得多。但是,我不能声明需要结构的方法。
我如何使用struct作为Objective-C方法的参数并获取返回结构的对象?
//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 :(得分: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;
方法中的类型必须是parens,你必须引用struct Entity
而不是Entity
,除非你是typedef(在Objective-C中,Objective-C ++可能允许你这样做)< / p>
答案 1 :(得分:2)
结构始终用作Objective-C中的参数。例如Apple的CGGeometry Reference
中的CGRectstruct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct 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;
应该允许你定义
-(BOOL)detectCollisionBetweenEntity:(Entity) ent1 andEntity:(Entity) ent2;
-(Entity)createEntityWithX:int newEntityX andY:int newEntityY, withType:int newEntityType withWidth:int newEntityWidth andLength:int newEntityLength;