试图添加图像时崩溃的应用程序..?

时间:2011-07-27 07:35:35

标签: iphone multithreading image core-data

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

我正在使用此方法添加Observer: -

[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张照片后会发生崩溃。

如果有任何可以指导我摆脱这个问题。

先谢谢

1 个答案:

答案 0 :(得分:1)

你正在泄漏内存,可能正因为如此,你的应用程序将崩溃。我认为该应用程序内存耗尽并被杀死。

中删除[dic retain]
[NSThread detachNewThreadSelector:@selector(addImage:) toTarget:self withObject:[dic retain]];

方法调用保留对象。请参阅detachNewThreadSelector:toTarget:withObject:的讨论。

  

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

你的电话应该是

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