Objective c 在似乎没有错误的地方崩溃

Objective c 在似乎没有错误的地方崩溃,objective-c,struct,objective-c++,Objective C,Struct,Objective C++,我刚刚减少了大量的错误,现在我的代码编译得很好,但是在我创建的createEntity方法中它总是崩溃。这似乎没什么问题,但有人能帮我吗?有什么建议吗 -(void)createEntityWithX:(int)newEntityX andY:(int)newEntityY withType:(int)newEntityType withWidth:(int)newEntityWidth andLength:(int)newEntityLength atSpeed:(int)newEntity

我刚刚减少了大量的错误,现在我的代码编译得很好,但是在我创建的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];
}

这两件事中的一件或两件都错了。有可能
entityArray
不是
NSMutableArray
,而是
NSArray
,在这种情况下,会出现“无法识别的选择器”错误

修复后,您需要修复索引。无法将对象插入与其
计数
对应的索引处的
NSMutableArray
,因为插入的最后一个有效索引是
count-1
。您应该使用
addObject:
将某些内容放在数组的末尾:

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

[entityArray addObject:tmp];

这两件事中的一件或两件都错了。有可能
entityArray
不是
NSMutableArray
,而是
NSArray
,在这种情况下,会出现“无法识别的选择器”错误

修复后,您需要修复索引。无法将对象插入与其
计数
对应的索引处的
NSMutableArray
,因为插入的最后一个有效索引是
count-1
。您应该使用
addObject:
将某些内容放在数组的末尾:

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

[entityArray addObject:tmp];

您是否调试过哪一行导致了问题?int arrayAmount=[entityArray count];NSValue*tmp=[NSValue-valueWithBytes:&tmpEntity-objCType:@encode(结构实体)];[entityArray插入对象:tmp atIndex:arrayAmount];其中一个。。。它的编译很好,但是当调用此方法时会崩溃。崩溃消息是什么?我没有,因为我无法在计算机上调试,只是每当调用此方法时。。。有没有什么方法可以让你看到错误可能来自于此?当发布请求帮助的崩溃时,请包含错误消息。在这种情况下,这可能是«NSInvalidArgumentException',原因:'-[\uu NSArrayI insertObject:atIndex:]:未识别的选择器发送到实例»或«未捕获异常'NSRangeException',原因:'***-[\uu NSArrayM insertObject:atIndex:]:索引超出空数组的界限»是否已调试以查看哪一行造成问题?int arrayAmount=[entityArray count];NSValue*tmp=[NSValue-valueWithBytes:&tmpEntity-objCType:@encode(结构实体)];[entityArray插入对象:tmp atIndex:arrayAmount];其中一个。。。它的编译很好,但是当调用此方法时会崩溃。崩溃消息是什么?我没有,因为我无法在计算机上调试,只是每当调用此方法时。。。有没有什么方法可以让你看到错误可能来自于此?当发布请求帮助的崩溃时,请包含错误消息。在这种情况下,可能是«NSInvalidArgumentException',原因:'-[\uu NSArrayI insertObject:atIndex:]:未识别的选择器发送到实例»或«uncaught exception'NSRangeException',原因:'***-[\uu NSArrayM insertObject:atIndex:]:索引超出空数组的界限»我认为,因为它的基为0,第10项将位于索引9处,那么count会返回10吗?是的,插入的最后一个有效索引是9。我认为,因为它的基数为0,项目10将位于索引9,所以count会返回10吗?是的,插入的最后一个有效索引是9。