Objective-c 将对象添加到 NSMutableArray 时程序崩溃
Objective-c program crashes when adding object to NSMutableArray
所以,我是 Obj-c 的新手,我在使用以下代码时发生了奇怪的崩溃:
- (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;
}
此代码运行良好,但一旦我取消注释将对象添加到 "adjacents" NSMutableArray 的行,程序就会崩溃。
getAdjacents方法的签名如下:
- (NSMutableArray*)getAdjacents:(int)startX withY:(int)startY;
我正在 Windows 下开发一个 Cordova 插件,所以我没有任何调试信息可以提供...但也许有经验的 obj-c 开发人员会清楚我的错误?
非常感谢您的帮助!
如果您将代码更改为以下内容,
NSMutableArray *adjacents = [[NSMutableArray alloc] initWithArray:[[self getAdjacents:startX withY:startY] mutableCopy]];
所以,我是 Obj-c 的新手,我在使用以下代码时发生了奇怪的崩溃:
- (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;
}
此代码运行良好,但一旦我取消注释将对象添加到 "adjacents" NSMutableArray 的行,程序就会崩溃。
getAdjacents方法的签名如下:
- (NSMutableArray*)getAdjacents:(int)startX withY:(int)startY;
我正在 Windows 下开发一个 Cordova 插件,所以我没有任何调试信息可以提供...但也许有经验的 obj-c 开发人员会清楚我的错误?
非常感谢您的帮助!
如果您将代码更改为以下内容,
NSMutableArray *adjacents = [[NSMutableArray alloc] initWithArray:[[self getAdjacents:startX withY:startY] mutableCopy]];