Объектив C iPad - проблемы с памятью с использованием ARC

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

Есть ли решение для решения этой проблемы? Я не понимаю, почему память растет?

Спасибо за помощь.

_rawdatalocal = [NSEntityDescription insertNewObjectForEntityForName:@"RAWDATA"
                                                       inManagedObjectContext:managedObjectContext];    

for(int j = 1; j <[array count];j++)
        {
            NSArray *values = [[NSArray alloc] initWithArray:[[array objectAtIndex:j] componentsSeparatedByString:@";"]];

            if([values count] == 12)
            {
            _rawdatalocal.accX = [[NSNumber alloc] initWithInt:[[values objectAtIndex:1] intValue]];
                _rawdatalocal.accY = [[NSNumber alloc] initWithInt:[[values objectAtIndex:2] intValue]];
                _rawdatalocal.accZ = [[NSNumber alloc] initWithInt:[[values objectAtIndex:3] intValue]];
                _rawdatalocal.gyrX = [[NSNumber alloc] initWithInt:[[values objectAtIndex:4] intValue]];
                _rawdatalocal.gyrY = [[NSNumber alloc] initWithInt:[[values objectAtIndex:5] intValue]];
                _rawdatalocal.gyrZ = [[NSNumber alloc] initWithInt:[[values objectAtIndex:6] intValue]];
                _rawdatalocal.magX = [[NSNumber alloc] initWithInt:[[values objectAtIndex:7] intValue]];
                _rawdatalocal.magY = [[NSNumber alloc] initWithInt:[[values objectAtIndex:8] intValue]];
                _rawdatalocal.magZ = [[NSNumber alloc] initWithInt:[[values objectAtIndex:9] intValue]];
                _rawdatalocal.temperature = [[NSNumber alloc] initWithFloat:[[values objectAtIndex:10] floatValue]];
                _rawdatalocal.temps = [[NSNumber alloc] initWithInt:[[values objectAtIndex:11] intValue]];

        }

PS: Обычно строка ниже находится в цикле

_rawdatalocal = [NSEntityDescription insertNewObjectForEntityForName:@"RAWDATA"
                                                           inManagedObjectContext:managedObjectContext];
0
nl ja de
Вам действительно нужно использовать NSNumber? Если вы не пытаетесь конвертировать что-либо в свой код, придерживайтесь простого int или long. Он будет использовать меньше памяти и быстрее инициализируется. Я не знаю, сколько циклов у вас есть, но это может быть важно, если вы говорите, что это создает сбои памяти. Профилируйте свое приложение и сообщите нам об объеме памяти.
добавлено автор Kalzem, источник

1 ответы

Вы можете поместить пул автозапуска в свой цикл, чтобы избежать всплесков памяти. В дуге вам нужно поставить свои опросы автореферата следующим образом:

@autorelease{

}

More information here

1
добавлено