Пожалуйста, помогите с iPhone Memory & Images, приложением для сбоя использования памяти - PullRequest
1 голос
/ 27 апреля 2010

У меня есть проблема с использованием памяти, относящейся к изображениям, и я искал документы и смотрел видео с cs193p и сайта разработчиков iphone на предмет плотности и производительности памяти. Я искал в Интернете и публиковал сообщения на форумах, но до сих пор не могу понять.

Приложение использует основные данные и просто позволяет пользователю связывать текст с изображением и сохраняет список элементов в табличном представлении, которое позволяет добавлять и удалять элементы. Нажатие на строку показывает изображение и связанный текст. это все.

Все отлично работает на симуляторе и на устройстве. Я запустил анализатор, и он выглядел хорошо, поэтому я начал смотреть на производительность. Я проверил утечки, и все выглядело хорошо. Моя проблема заключается в запуске Object Allocations, поскольку каждый раз, когда я выбираю строку и отображается представление с изображением, текущие байты увеличиваются на несколько МБ и никогда не выключаются, и мое приложение в конечном итоге падает из-за использования памяти. Сортируя столбец живых байтов, я вижу 2 2.72 МБ malloc (всего 5.45 МБ), 14 CFDatas (3.58 МБ всего), 1 2.74 МБ malloc и все остальное очень мало. проблема в том, что вся связанная с инструментами информация действительно техническая, и все примеры решения проблем, которые я видел, просто пропускают релиз и ничего сложного. Instruments показывает Core Data как ответственную библиотеку для всех, кроме одной (libsqlite3.dylib, другой) с [NSSQLCore _prepareResultsFromResultSet: usingFetchPlan: withMatchingRows:] в качестве вызывающей стороны для всех, кроме одной (fetchResultSetReallocCurrentRow другой как), и я просто не уверен в чем проблема. Я посмотрел на следы стека и открыл последний экземпляр моего кода и нашел 2 преступников (ниже). Я не смог получить никаких ответов на этот вопрос, поэтому, если у кого-то есть какие-либо советы или указатели, я был бы очень признателен за это !!!!

    //this is from view controller that shows the title and image
    - (void)viewWillAppear:(BOOL)animated 
    {
        [super viewWillAppear:animated];
    self.title = item.title;
    self.itemTitleTextField.text = item.title;
    if ([item.notes length] == 0) 
    {
        self.itemNotesTextView.hidden = YES;
    } else 
    {
        self.itemNotesTextView.text = item.notes;
    } //this is the line instruments points to
    UIImage *image = item.photo.image;
    itemPhoto.image = image;
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{
    if (editingStyle == UITableViewCellEditingStyleDelete) 
    {
        // Delete the managed object for the given index path
        NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
        [context deleteObject:[fetchedResultsController objectAtIndexPath:indexPath]];

        // Save the context.
        NSError *error = nil;
        if (![context save:&error]) //this is the line instruments points to
        {

            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            exit(-1);
        }
    }   
}

1 Ответ

0 голосов
/ 27 апреля 2010

Я предлагаю вам хранить URL изображения вместо самих данных изображения. Это мешает CoreData работать и кэшировать большие данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...