Я использую UIScrollView
в своем приложении, которое загружает количество изображений (более 200 изображений).
Я загружаю изображения с диска и просто добавляю их в UIScrollView
. Я получаю сообщение об ошибке Xcode 5 «Прекращено из-за ошибки памяти», и приложение неожиданно завершается. Но не каждый раз, когда это происходит время от времени.
Я до сих пор не уверен, что это проблема с памятью. Но я не нашел причину проблемы с памятью.
Даже я проверил проблему утечки памяти с помощью инструментального инструмента, утечки памяти нет.
Я создал пользовательский повторно используемый класс UIView
с помощью пользовательского класса ACReuseQueue
для UIScrollView
, например UITableView
, из-за эффективности и трудоемкости создания объекта.
Я реализовал концепцию постановки в очередь и удаления из очереди внутри scrollViewDidScroll
:
Чтобы добавить изображение в UIScrollView
: используется следующий код
-(void)imageAdd:(ALAsset *)item
{
__block ImageControl *imageControl;
imageControl = (ImageControl*)[[ACReuseQueue defaultQueue] dequeueReusableObjectWithIdentifier:@"ImageControl"];
[imageControl setAlAsset:item];
[imageControl setDuration:1.0];
[imageControl setIsCopy:NO];
[self.galleryView addItem:imageControl];
[imageControl release];
}
ниже код используется, когда пользователь прокручивает ScrollView
-(void)scrollViewDidScroll:(UIScrollView*)scrollView
{
for (ImageControl *imageControl in self.galleryView.items)
{
if (CGRectIntersectsRect(imageControl.frame, self.galleryView.bounds))
{
imageControl = (ImageControl*)[[ACReuseQueue defaultQueue] dequeueReusableObjectWithIdentifier:@"ImageControl"];
[self.galleryView addItem:imageControl];
}
else
{
[imageControl removeFromSuperview];
[[ACReuseQueue defaultQueue] enqueueReusableObject:imageControl];
}
}
}
Тем не менее, я не достиг многоразового использования UIScrollView
, как UITableView