Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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 尝试添加图像时应用程序崩溃。。?_Iphone_Multithreading_Image_Core Data - Fatal编程技术网

Iphone 尝试添加图像时应用程序崩溃。。?

Iphone 尝试添加图像时应用程序崩溃。。?,iphone,multithreading,image,core-data,Iphone,Multithreading,Image,Core Data,我是新的iPhone开发者。我正在升级现有的iPhone应用程序。我使用核心数据模型来保存数据。 在应用程序中,有15个方形框用于添加图像。我调用一个分离的线程来创建一个单独的进程。在此过程中,我将图像保存为两种大小。我添加了带有图像对象的观察者,最后删除了观察者 我使用此方法添加观察者:- [projectImage addObserver:self forKeyPath:@"fileName" options:NSKeyValueObservingOptionNew context:nil]

我是新的iPhone开发者。我正在升级现有的iPhone应用程序。我使用核心数据模型来保存数据。 在应用程序中,有15个方形框用于添加图像。我调用一个分离的线程来创建一个单独的进程。在此过程中,我将图像保存为两种大小。我添加了带有图像对象的观察者,最后删除了观察者

我使用此方法添加观察者:-

[projectImage addObserver:self forKeyPath:@"fileName" options:NSKeyValueObservingOptionNew context:nil];
这种制造独立螺纹的方法:-

[NSThread detachNewThreadSelector:@selector(addImage:) toTarget:self withObject:[dic retain]];
这里的AddImage方法类似于:-

- (void) addImage:(NSDictionary *) dic {
   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
   UIImage *image = [dic objectForKey:@"image"];
   projectImage = nil;
   projectImage = [dic objectForKey:@"managedObject"];
   [projectImage importImageData:image];
   [projectImage removeObserver:self forKeyPath:@"fileName"];   
   [pool drain];   
}
dic是一本字典

我的问题是: 它在通过相机或手机库拍摄了4-5张照片后崩溃了

如果有人能指导我解决这个问题


提前感谢

您正在泄漏内存,可能因此您的应用程序将崩溃。我认为该应用程序内存不足,会被杀死

从车辆上拆下
[dic保留]

[NSThread detachNewThreadSelector:@selector(addImage:) toTarget:self withObject:[dic retain]];
该对象由方法调用保留。参见对的讨论

在执行分离的线程期间,对象aTarget和anArgument将保留,然后释放。一旦aTarget完成执行aSelector方法,分离的线程就会退出(使用exit类方法)

你的电话应该是

[NSThread detachNewThreadSelector:@selector(addImage:) toTarget:self withObject:dic];

感谢fluchtpunkt的回复,我正在这样做,但它不起作用,可能是因为内存泄漏。您能给我一些提示,使一个方法同步,以便在另一个进程运行后执行。。。?我该怎么称呼它呢?我想一次执行这个图像保存方法。