2013-04-13 39 views
0

allTiles是NSMutuableArray与9.接着一个循环的容量声明插入9 NSNull与被叫resetArray方法的对象。我有一个名为addToArray的方法,它接受一个NSNumber和索引来插入值。插入的NSNumber成的NSMutableArray

在另一个类中,我有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

什么是崩溃? – lnafziger

+1

请注意,像这样的情况下的崩溃信息当然是可用的,你只是不知道如何找到它。首先,添加一个异常断点。 (选择断点视图,按下底部的“+”并选择添加异常断点。)接下来,看看[这个问题](http://stackoverflow.com/questions/8100054/no-exception-stack-trace -in-控制台下的xcode-4-2-IOS-5)。 –

+0

我绝对是一个新的Objective-C程序员,非常感谢您提供的信息/问题链接。 – joshft91

回答

2

幽州currentTitleValueint。鉴于此,你需要改变这一行:

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

到:

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

你不能施放的intNSNumber指针。你需要转换它。

此外,您的addToArray方法不正确。既然你有9个NSNull对象预填充数组,你需要调用replaceObjectAtIndex:withObject:,不insertObject:atIndex(假设你只是想在任何时候都9个值):

[allTiles replaceObjectAtIndex:index withObject:value]; 

你也应该将addToArray::方法重命名为更好的东西:

- (void)addToArray:(NSNumber*)value index:(int)index { 
+0

非常感谢,非常感谢。这也帮助我接下来要问的扩大阵列问题。 当你说要将它重命名为更好的东西时,它会是一个更好的名字? – joshft91

+0

我展示了更好的名字 - 请参阅我答案的最后一行。 – rmaddy

+0

好的,我现在看到了区别。这会添加到方法名称中是什么? – joshft91

相关问题