Сбой приложения при попытке добавить изображения ..? - PullRequest
0 голосов
/ 27 июля 2011

Я новый разработчик iPhone. Я обновляю существующее приложение для iPhone. Я использую Core Data Model для сохранения данных. В приложении есть 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 снимков с помощью камеры или библиотеки телефона.

Если таковые могут помочь мне избавиться от этой проблемы.

Заранее спасибо

1 Ответ

1 голос
/ 27 июля 2011

У вас утечка памяти, и, вероятно, из-за этого ваше приложение зависнет.Я думаю, что приложение исчерпывает память и убивается.

удаляет [dic retain] из

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

, объект сохраняется при вызове метода.См. Обсуждение detachNewThreadSelector: toTarget: withObject: .

Объекты aTarget и anArgument сохраняются во время выполнения отсоединенного потока, затем освобождаются.Отсоединенный поток завершается (используя метод класса выхода), как только aTarget завершил выполнение метода aSelector.

ваш вызов должен быть

[NSThread detachNewThreadSelector:@selector(addImage:) toTarget:self withObject:dic];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...