2012-05-05 8 views
1

私はちょうどエロスを捨ててしまったので、今度は自分のコードがうまくコンパイルされますが、私が作ったcreateEntityメソッドでは常にクラッシュします。一見間違っていることはありませんが、誰かが私を助けてくれますか?提案するものは何ですか?エラーが一見無くなったところでクラッシュする

-(void)createEntityWithX:(int)newEntityX andY:(int)newEntityY withType:(int)newEntityType withWidth:(int)newEntityWidth andLength:(int)newEntityLength atSpeed:(int)newEntitySpeed 
{ 
    Entity tmpEntity; 
    tmpEntity.entityX = newEntityX; 
    tmpEntity.entityY = newEntityY; 
    tmpEntity.entityLength = newEntityLength; 
    tmpEntity.entityWidth = newEntityWidth; 
    tmpEntity.entityType = newEntityType; 
    tmpEntity.entitySpeed = newEntitySpeed; 

    int arrayAmount = [entityArray count]; 
    NSValue *tmp = [NSValue valueWithBytes:&tmpEntity objCType:@encode(struct Entity)]; 

    [entityArray insertObject:tmp atIndex:arrayAmount]; 

    [tmp release]; 
} 
+2

あなたがトラブルの原因となっている行を参照して、デバッグしていますか? – Anila

+0

int arrayAmount = [entityArray count]; NSValue * tmp = [NSValue valueWithBytes:&tmpEntity objCType:@encode(struct Entity)]; [entityArray insertObject:tmp atIndex:arrayAmount];これらのうちの1つ...コンパイルは正常ですが、このメソッドが – DuskFall

+1

と呼ばれ、クラッシュメッセージが表示されるとクラッシュしますか? – Anila

答えて

1

ここでは2つのうちの一方または両方が間違っています。 entityArrayNSMutableArrayではなく、NSArrayである可能性があります。この場合、「認識できないセレクタ」エラーが発生しています。

これが修正された後は、インデックス作成を修正する必要があります。 countに対応するインデックスのNSMutableArrayにオブジェクトを挿入することはできません。最後の有効な挿入インデックスはcount-1です。あなたは、配列の終わりに何かを入れてaddObject:を使用する必要があります。

NSValue *tmp = [NSValue valueWithBytes:&tmpEntity objCType:@encode(struct Entity)]; 

[entityArray addObject:tmp]; 
+0

私は、基数0、アイテム10がインデックス9にあるので、カウントは10を返すので、と思ったのですか? – DuskFall

+1

はい、挿入に最後に有効なインデックスは9です。 –

関連する問題