【发布时间】:2017-07-13 23:42:08
【问题描述】:
所以,我是 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;
}
这段代码运行良好,但是一旦我取消注释我将对象添加到“相邻”NSMutableArray 的行,程序就会崩溃。
getAdjacents 方法的签名如下:
- (NSMutableArray*)getAdjacents:(int)startX withY:(int)startY;
我正在 Windows 下开发一个 Cordova 插件,所以我没有任何调试信息可提供...但是对于有经验的 obj-c 开发人员来说,我的错误可能会很清楚吗?
非常感谢您的帮助!
【问题讨论】:
-
您没有崩溃日志?我的猜测是事实上
adjacents是NSArray而不是NSMutableArray,但这纯粹是猜测。 -
你确定 getAdjacents 返回一个 mutable 数组吗?尽管有签名,但返回的对象可能仍然只是一个 NSArray。
-
您能否发布您的崩溃日志,以便轻松找到问题所在?
-
你可以试试
NSMutableArray* adjacents = [[NSMutableArray alloc] initWithArray: [self getAdjacents:startX withY:startY]];然后在初始化的时候检查一下吗? -
我找不到任何崩溃日志,不...无论如何都没有任何相关信息。我尝试了您的解决方案@SaurabhYadav,但没有运气......我确定 getAdjacents 返回一个可变数组,因为它以
NSMutableArray* adjacents = [[NSMutableArray alloc] init];开头并在填充后返回该数组。
标签: ios objective-c cordova crash nsmutablearray