Iphone NSMutableArray-应用程序在模拟器中运行,但不在设备上运行

Iphone NSMutableArray-应用程序在模拟器中运行,但不在设备上运行,iphone,ios-simulator,nsmutablearray,device,sigabrt,Iphone,Ios Simulator,Nsmutablearray,Device,Sigabrt,我的应用程序在模拟器中运行良好,但在设备上运行时,它会以SIGABRT终止。我已将其缩小为以下代码: - (void)loadImage { int imageNumber = currentImageNumber; // check to see if the image has already been downloaded. // if not, get it and add it to an array if ([imageData count] < totalNumberOfIm

我的应用程序在模拟器中运行良好,但在设备上运行时,它会以SIGABRT终止。我已将其缩小为以下代码:

- (void)loadImage {
int imageNumber = currentImageNumber;
// check to see if the image has already been downloaded.
// if not, get it and add it to an array
if ([imageData count] < totalNumberOfImages && (imageNumber + 1) > [imageData count]) {
    NSString *urlString = [[mainMenuItem.imageDetails objectAtIndex: imageNumber] objectForKey: @"url"];
    NSURL *url = [NSURL URLWithString: urlString];
    NSData *data = [NSData dataWithContentsOfURL: url];
    UIImage *image = [UIImage imageWithData: data];
    [imageData addObject: image];
}

// set the image from the array
self.imageOnScreen = [imageData objectAtIndex: imageNumber];

既然模拟器中没有问题,是什么导致了这种情况?我很困惑,希望您能提供意见。我所做的只是在viewDidLoad中初始化NSMutableArray,然后向数组中添加一个对象。如果我清理了目标,发生的事情就没有变化。奇怪,因为应用程序的这一部分在几天前运行良好,我根本没有修改这个实现文件(我也没有更新到最新的iOS 4.1,所以OS或Xcode版本也没有更改)。

您粘贴的错误消息说明了一切:

[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 0

图像
对象为
nil
。为什么
nil
?在模拟器中运行Xcode时,在Xcode中设置一个断点,并找出罪魁祸首在它上面的那一行。

粘贴的错误消息说明了一切:

[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 0

图像
对象为
nil
。为什么
nil
?在模拟器中运行Xcode时,在Xcode中设置一个断点,并找出罪魁祸首在它上面的哪一行。

要详细说明Shaggy Frog的答案,我认为图像为零的最可能原因是从URL读取时出现问题。尝试使用并检查输出的错误,看看发生了什么。

要详细说明Shaggy Frog的答案,我认为图像为零的最可能原因是从URL读取时出现问题。尝试使用并检查输出的错误,看看发生了什么。

是的,这很有意义。我误读了上面的内容,因为前几天我在尝试查询nil数组时遇到了一个问题。我得到以下错误:PilotsMate(17524,0x3e9097c8)malloc:purgeable zone不支持保护页2010-09-17 00:27:11.768 PilotsMate[17524:5f03]error Domain=nscocaerorDomain Code=256“操作无法完成。(可可错误256)。”UserInfo=0x19fe00{NSURL=}如果你看到Jon Rodriguez的答案,他可能在正确的轨道上。我认为256是一个网络错误。可能模拟器由于某种原因无法访问URL。您的机器上是否设置了防火墙或代理?你能在运行Xcode的同一台机器上从Safari访问该URL吗?这就是为什么我现在知道错误是什么。它在模拟器中运行良好,但iPhone在从设备运行时会导致问题。它和macbook连接到同一个无线路由器。我可以从MacBookSafari中访问图像,但不能从我发现的iPhone中访问图像。为什么会这样?检查无线连接-它已连接到邻居。难道我不觉得自己像个布偶吗!!!我们所有的程序员有时都觉得自己像木偶。轮到你了。:)是的,这很有道理。我误读了上面的内容,因为前几天我在尝试查询nil数组时遇到了一个问题。我得到以下错误:PilotsMate(17524,0x3e9097c8)malloc:purgeable zone不支持保护页2010-09-17 00:27:11.768 PilotsMate[17524:5f03]error Domain=nscocaerorDomain Code=256“操作无法完成。(可可错误256)。”UserInfo=0x19fe00{NSURL=}如果你看到Jon Rodriguez的答案,他可能在正确的轨道上。我认为256是一个网络错误。可能模拟器由于某种原因无法访问URL。您的机器上是否设置了防火墙或代理?你能在运行Xcode的同一台机器上从Safari访问该URL吗?这就是为什么我现在知道错误是什么。它在模拟器中运行良好,但iPhone在从设备运行时会导致问题。它和macbook连接到同一个无线路由器。我可以从MacBookSafari中访问图像,但不能从我发现的iPhone中访问图像。为什么会这样?检查无线连接-它已连接到邻居。难道我不觉得自己像个布偶吗!!!我们所有的程序员有时都觉得自己像木偶。轮到你了。:)