Objective-C的程序崩溃添加对象的NSMutableArray
的时候所以,我有点新的OBJ-c和我有一个奇怪的崩溃与下面的代码发生的事情:Objective-C的程序崩溃添加对象的NSMutableArray
- (NSMutableArray*)followNonBlackPixels:(int)startX withY:(int)startY
{
NSMutableArray* result;
NSMutableArray* adjacents = [self getAdjacents:startX withY:startY];
int r = 0;
int i = 0;
int tempX;
int tempY;
int max = [adjacents count];
CGPoint tempPoint;
while(i < max)
{
int tempX = (int)[[adjacents objectAtIndex:i] CGPointValue].x;
int tempY = (int)[[adjacents objectAtIndex:i] CGPointValue].y;
result = [self getAdjacents:tempX withY:tempY];
for(r = 0; r < [result count]; r++)
{
tempPoint = [[result objectAtIndex:r] CGPointValue];
//[adjacents addObject:[NSValue valueWithCGPoint:CGPointMake(tempPoint.x, tempPoint.y)]];
}
i++;
max = [adjacents count];
}
return adjacents;
}
此代码运行正常,但只要我取消注释将对象添加到“相邻”NSMutableArray的行,那么该程序就会崩溃。
的getAdjacents方法的签名如下:
- (NSMutableArray*)getAdjacents:(int)startX withY:(int)startY;
我正在开发Windows下的一个插件,科尔多瓦,所以我没有任何调试信息提供...但也许我的错误是明显的给有经验的obj-c开发人员?
非常感谢您的帮助!
如果你改变你的代码下面,
NSMutableArray *adjacents = [[NSMutableArray alloc] initWithArray:[[self getAdjacents:startX withY:startY] mutableCopy]];
这并没有解决这个问题...我试过但仍然崩溃。 – Scalpweb
是否可以向我展示'getAdjacents'的代码,只是为了调试一切?令人惊讶的使用'mutableCopy'没有奏效。你可以发布什么崩溃消息,它应该只是在你的控制台,可能是'无法识别的选择器'或类似的东西。 – JingJingTao
我无法访问控制台,因为我在Windows下开发。这是一个cordova插件,用Telerik CLI编译。 – Scalpweb
你没有崩溃日志?我的猜测是,实际上'adjacents'是一个'NSArray'而不是'NSMutableArray',但这纯属猜测。 – Larme
你确定getAdjacents返回一个* mutable *数组吗?尽管签名返回对象可能仍然只是一个NSArray。 –
你可以发布你的崩溃日志,所以它很容易找到问题在哪里? – CodeChanger