Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 从一系列URL下载和写入图像会使iPad崩溃_Iphone_Objective C_Uiimage_Saving Data_Data Retrieval - Fatal编程技术网

Iphone 从一系列URL下载和写入图像会使iPad崩溃

Iphone 从一系列URL下载和写入图像会使iPad崩溃,iphone,objective-c,uiimage,saving-data,data-retrieval,Iphone,Objective C,Uiimage,Saving Data,Data Retrieval,我在一个单独的线程中使用以下代码将图像写入我的应用程序目录 for (int j =0; j<[sorted count]; j++) { NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[sorted objectAtIndex:j]]]; UIImage *image = [UIImage imageWithData:data]; if (image!=nil) {

我在一个单独的线程中使用以下代码将图像写入我的应用程序目录

for (int j =0; j<[sorted count]; j++) {
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[sorted objectAtIndex:j]]];
    UIImage *image = [UIImage imageWithData:data];
    if (image!=nil) {
        NSLog(@"%@",[sorted objectAtIndex:j]);
        [images addObject:image];
    }
}

for(int j=0;j不确定是什么导致了您的问题,但是
UIKit
不是线程安全的,因此这可能是原因。您可以尝试在主线程上执行代码,只是为了对其进行故障排除(并检查它是否正确),然后,如果我的猜测是正确的,请寻找解决方法


在寻找解决方法时,可能会有所帮助。

您正在下载多少个图像,它们有多大?您是否尝试过一次下载并写入一个图像,以避免一次将它们全部塞进内存?这取决于xml。大约168个图像的总大小超过250 mb。就是这样。或者至少是一个有贡献的factor.您无法一次处理250mb。但是从主线程下载和保存会导致我的UI冻结,这是我启动单独线程的第一个原因。我只是建议一种解决代码故障的方法,而不会出现非多线程UIKit问题…作为一种解决方法,您可以在主线程上执行转换在(
UIImageJPEGRepresentation
UIImageWithData
)上,一旦您拥有了
NSData
,在单独的线程中写入/读取文件。如果问题与UIKit多线程有关,那么我看不到其他方法。
for (int k=0;k<[images count];k++)
{
    NSString *temp = [[sorted objectAtIndex:k]lastPathComponent];
    NSString *imagePath = [dataPath stringByAppendingPathComponent:temp];
    NSData *data = UIImageJPEGRepresentation([images objectAtIndex:k], 1.0f);
    [data writeToFile:imagePath atomically:YES];

}