Я искал бесконечно безрезультатно, надеюсь, кто-то может помочь!Odd Scrolling Issue (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:
Вы загружаете изображения из URL? – iHS
Сколько у вас продуктов? Можете ли вы показать нам свой ProductListLeftItemViewController? BTW, вызывающий освобождение на cellItem после установки cellItem на nil, является бессмыслицей. Вы должны поменять эти две строки. – robertvojta
Harinder: Я не загружал изображения из URL, на самом деле, я очистил весь подъярус, чтобы он был всего лишь непрозрачным белым фоном - тем же результатом. В основном Иззи: всего 8 продуктов, но я даже попробовал его всего за 1 продукт и с минимальной информацией - тот же результат. И спасибо, я поменял линии. – KidIcarus271