allTiles是一个声明容量为9的NSMutuableArray。接下来,循环使用名为resetArray
的方法插入9个NSNull对象。我有一个名为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];
导致此崩溃的原因是什么?
答案 0 :(得分:2)
您声明currentTitleValue
是int
。鉴于此,您需要更改此行:
[(BoxView *)self.superview addToArray:(NSNumber*)currentTileValue :currentTileValue];
为:
[(BoxView *)self.superview addToArray:@(currentTileValue) :currentTileValue];
您无法将int
强制转换为NSNumber
指针。你需要转换它。
此外,您的addToArray
方法不正确。由于您使用9 NSNull
个对象预先填充数组,因此您需要调用replaceObjectAtIndex:withObject:
,而不是insertObject:atIndex
(这假设您只需要9个值):
[allTiles replaceObjectAtIndex:index withObject:value];
您还应该将addToArray::
方法重命名为更好的方法:
- (void)addToArray:(NSNumber*)value index:(int)index {