0

allTiles 是一个 NSMutuableArray,声明的容量为 9。接下来,循环插入 9 个 NSNull 对象,方法名为resetArray. 我有一个名为 addToArray 的方法,它接受一个 NSNumber 和在其中插入值的索引。

在另一个类中,我有int currentTileValue = [self getTileValue];一个返回 tile 值的类。该值既是数组中的数字,也是索引。每当我尝试添加到数组时,它都会崩溃,但没有说明原因。

allTiles = [[NSMutableArray alloc] initWithCapacity:9];
[self resetArray:allTiles];

- (void) resetArray:(NSMutableArray*) array {
for (int i = 0; i < 9; i++) {
    [array insertObject:[NSNull null] atIndex:i];
}
}

- (void) addToArray:(NSNumber*)value :(int)index {
[allTiles insertObject: value atIndex:index];
}
//Different class
//Here is where I am trying to insert into the array.
[(BoxView *)self.superview addToArray:(NSNumber*)currentTileValue :currentTileValue];

什么会导致这崩溃?

4

1 回答 1

2

你说那currentTitleValue是一个int. 鉴于此,您需要更改此行:

[(BoxView *)self.superview addToArray:(NSNumber*)currentTileValue :currentTileValue];

至:

[(BoxView *)self.superview addToArray:@(currentTileValue) :currentTileValue];

您不能将 anint转换为NSNumber指针。你需要转换它。

另外,你的addToArray方法不正确。由于您使用 9 个对象预先填充数组NSNull,因此您需要调用replaceObjectAtIndex:withObject:,而不是insertObject:atIndex(假设您始终只需要 9 个值):

[allTiles replaceObjectAtIndex:index withObject:value];

您还应该将您的addToArray::方法重命名为更好的名称:

- (void)addToArray:(NSNumber*)value index:(int)index {
于 2013-04-13T02:41:47.357 回答