сбой приложения после выделения 10 МБ памяти - PullRequest
0 голосов
/ 10 февраля 2012

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

Я выделяю метку Approax 1000 каждый раз, когда нажимаю на любую кнопку в цикле for и отпускаю ее послеработа сделана, пожалуйста, помогите.В приборе нет утечек памяти, но все равно происходит сбой приложения после выделения 10 МБ памяти.

это код, который я применяю по нажатию кнопки, это правильный способ ??????

-(IBACTION) btnShow
{ 

    for (UIView *obj in scrollview.subviews)
    {
        [obj removeFromSuperview];
    }

    int x;
    int y=0;

    for (int j=0; j<12; j++) {
        x=0;

        // Do any additional setup after loading the view, typically from a nib.
        for (int i=0; i<1000; i++) {
            UILabel * lblUsage=[[UILabel alloc] initWithFrame:CGRectMake(x, y, 75, 45)];
            lblUsage.text=[NSString stringWithFormat:@"%d",i];
            lblUsage.textColor=[UIColor lightGrayColor];
            lblUsage.numberOfLines=2;
            lblUsage.font = [UIFont systemFontOfSize:14.0];
            lblUsage.textAlignment=UITextAlignmentCenter;        
            lblUsage.backgroundColor=[UIColor colorWithPatternImage:
            [UIImage imageNamed:@"labelBox.png"]];
            lblUsage.layer.borderColor = [UIColor blackColor].CGColor;
            lblUsage.layer.borderWidth = 0.5;
            [scrollview addSubview:lblUsage];
            [lblUsage release];

            x+=75;
        }
        y+=40;
    }
    scrollview.contentSize=CGSizeMake(x, 1000);
}

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

вы получаете предупреждение о памяти в приведенном выше коде

предупреждение о памяти уровня 1 является первым предупреждением, где вы должны удалить ненужный вид для очистки памяти

уровень предупреждения о памяти 2 является пределом .. удалите что-либо сейчас, или ваше приложение закроется в течение нескольких секунд.

уровень предупреждения о памяти 3 будет отправлен, когда система решилавыйдите из приложения!из-за использования памяти

0 голосов
/ 10 февраля 2012

Извините, но вам просто нужно принять совершенно другой подход, который сделает ваш код намного сложнее.Невозможно обойтись, создав 12.000 ярлыков с фоновым рисунком.

  • изначально вы будете создавать только те метки, которые отображаются на экране, и одну или две строки (и столбцы) из тех, которые могут вскоре появиться на экране, пока пользователь выполняет прокрутку

  • , тогда вы будете выполнять большую часть своей работы в viewDidScroll, создавая и выбрасывая этикетки на лету.здесь ваш код должен решить, какие метки могут быть удалены (когда они достаточно далеко от видимого экрана), а какие должны быть созданы, потому что они могут скоро появиться на экране (зависит от текущего местоположения контента. смещение)

Взгляните на ScrollViewSuite в качестве примера для листов.Это не совсем то, что вы ищете, но это должно дать вам толчок.

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