我是新的iPhone开发人员。我正在升级现有的iPhone应用程序。我正在使用核心数据模型来保存数据。在App中,有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张照片后,它崩溃了。
如果有的话,可以引导我解决这个问题。
提前感谢
发布于 2011-07-27 15:40:57
你正在泄漏内存,可能正因为如此,你的应用程序将会崩溃。我想这个应用程序内存不足,然后就被杀死了。
从中删除[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];https://stackoverflow.com/questions/6840925
复制相似问题