我的应用在模拟器中运行良好,但在设备上运行时,它会以SIGABRT终止。我已经缩小到以下代码:NSMutableArray - 应用在模拟器中运行,但不在设备上
- (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];
}
它是[的imageData ADDOBJECT:图片];使用以下控制台输出的消息:
2010-09-17 00:03:03.005 PilotsMate[17426:5e03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 0'
*** Call stack at first throw:
(
0 CoreFoundation 0x313f4fd3 __exceptionPreprocess + 114
1 libobjc.A.dylib 0x3302f8a5 objc_exception_throw + 24
2 CoreFoundation 0x31377f99 -[__NSArrayM insertObject:atIndex:] + 472
3 CoreFoundation 0x31377da7 -[__NSArrayM addObject:] + 34
4 PilotsMate 0x00007c5d -[WeatherDetailViewController loadImage] + 300
5 PilotsMate 0x00007eb1 -[WeatherDetailViewController displayPicture:] + 232
6 Foundation 0x33265c9d -[NSThread main] + 44
7 Foundation 0x332ea9e1 __NSThread__main__ + 972
8 libSystem.B.dylib 0x3527598d _pthread_start + 248
9 libSystem.B.dylib 0x3526b0ec thread_assign_default + 4294967295
)
terminate called after throwing an instance of 'NSException'
[Switching to thread 11523]
[Switching to thread 11523]
Program received signal: “SIGABRT”.
kill
这是什么原因导致的,因为模拟器中没有问题?我很困惑,并希望你的意见。我所做的只是在viewDidLoad中初始化一个NSMutableArray,然后向该数组添加一个对象。如果我清理目标,发生的事情不会改变。奇怪的是,因为这部分应用程序前几天运行良好,我根本没有修改这个实现文件(我也没有更新到最新的iOS 4.1,所以没有改变操作系统或Xcode版本) 。
是的,这是有道理的。我误解了那个说法,因为我有一个问题偶然试图查询一个零阵列有一天。我得到以下错误: PilotsMate(17524,0x3e9097c8)malloc:可清除区域不支持保护页面 2010-09-17 00:27:11.768 PilotsMate [17524:5f03]错误域= NSCocoaErrorDomain代码= 256“操作cann '可以完成(Cocoa error 256.)“UserInfo = 0x19fe00 {NSURL = http://image.weather.com/images/sat/uksat_600x405.jpg} – 2010-09-16 23:33:12
如果你看到Jon Rodriguez的回答,他可能是在正确的轨道上。我认为256是一个网络错误。可能由于某种原因,模拟器无法访问URL。你的机器上是否安装了防火墙或代理?你能在运行Xcode的同一台机器上从Safari访问该URL吗? – 2010-09-16 23:39:39
这就是为什么我现在知道错误是什么。它在模拟器中运行良好,但iPhone从设备运行时会导致问题。它连接到与macbook相同的无线路由器。我可以从macbook Safari浏览器访问该映像,但不能从我发现的iPhone中访问该映像。为什么会这样? – 2010-09-16 23:48:00