Nano Hash - криптовалюты, майнинг, программирование

Странная проблема с прокруткой (UIScrollView)

Я искал бесконечно безрезультатно, надеюсь, кто-то может помочь!

У меня есть UIScrollView в левой половине UIView, который загружается в пользовательские ячейки/подвиды. UIView является частью стека UINavigation и также загружается во вкладку TabBar.

Что происходит, если я запускаю приложение и сразу же начинаю прокручивать, оно очень плавное. Однако, если я запускаю приложение и подожду 5-10 секунд, UIScrollView будет ОЧЕНЬ медленным и прерывистым (и он останется таким). Я бы подумал, что это будет утечка памяти или что-то в этом роде, но я ничего не могу найти.

Включен код представления, в котором я загружаю пользовательские ячейки/подпредставления в UIScrollView. В подвиде ячейки нет никакого пользовательского кода. Да, и там всего около 8-10 элементов: каждый элемент имеет маленькое (150x150) изображение и 3 текстовых поля - все непрозрачные.

    #import "ProductListViewController.h"
    #import "ProductListLeftItemViewController.h"


    @implementation ProductListViewController

    @synthesize listScroll;



    - (void)viewDidLoad {

        NSBundle *bundle = [NSBundle mainBundle];
        NSString *path = [bundle pathForResource:@"Products" ofType:@"plist"];
        NSArray *products = [[NSArray alloc] initWithContentsOfFile:path];
        //  
        int numProducts;
        numProducts = [products count];
        [listScroll setContentSize:CGSizeMake(500, (numProducts * 111))];
        for (int i = 0; i < numProducts; i++) {
            ProductListLeftItemViewController *cellItem = [[ProductListLeftItemViewController alloc] initWithNibName:@"ProductListLeftItem" bundle:nil];
            cellItem.view.frame = CGRectMake(0, (i*111), 500, 111);

            [self.listScroll addSubview:cellItem.view];
            cellItem = nil;
            [cellItem release];
        }
        [products release]; 

        [super viewDidLoad];

    }

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
        return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
    }

    - (void)didReceiveMemoryWarning {
        // Releases the view if it doesn't have a superview.
        NSLog(@"Memory warning, ProductListViewController");

        [super didReceiveMemoryWarning];

        // Release any cached data, images, etc that aren't in use.
    }

    - (void)viewDidUnload {
        // Release any retained subviews of the main view.
        // e.g. self.myOutlet = nil;
    }


    - (void)dealloc {
        [listScroll release];
        [super dealloc];
    }

    @end

И, как было запрошено, код ProductListLeftItemViewController:

#import "ProductListLeftItemViewController.h"


@implementation ProductListLeftItemViewController

@synthesize titleTxt, descriptionTxt, modelTxt, productThumb;


 // The designated initializer.  Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
/*
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization.
    }
    return self;
}
*/

/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/

/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
}
*/


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}


- (void)viewDidUnload {
    titleTxt = nil;
    descriptionTxt = nil;
    modelTxt = nil;
    productThumb = nil;


    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [titleTxt release];
    [descriptionTxt release];
    [modelTxt release];
    [productThumb release];
    [super dealloc];
}


@end

  • вы загружаете изображения с URL? 21.02.2011
  • Сколько продуктов у вас есть? Можете ли вы показать нам свой ProductListLeftItemViewController? Кстати, вызов релиза для cellItem после установки для cellItem значения nil — это нонсенс. Вы должны поменять местами эти две строки. 21.02.2011
  • Хариндер: Я не загружал изображения по URL-адресу, на самом деле я очистил все подпредставление, чтобы оно было не чем иным, как непрозрачным белым фоном - тот же результат. Главным образом Иззи: Всего 8 продуктов, но я пробовал даже с 1 продуктом и с минимумом информации - тот же результат. И спасибо, я поменял местами строки. 21.02.2011

Ответы:


1

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

17.03.2011
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..