Ich mache eine Bildgalerie-Anwendung in IOS, wo Benutzer die Galerie Bilder durchsuchen können. Ich habe einen Paging aktiviert UIScrollView
wie in this Beispielcode. Alles funktioniert. Aber das Problem ist, während ich durch die Seiten blättern, Anzahl der Core-Animation Objekte erstellt werden und sie nie veröffentlicht.IOS Core Animation Objekte werden nicht freigegeben
|Graph---|Category------------------|Live Bytes---|#Living----|#Transient
|1-------|All Heap & Anonymous VM |58.69 MB-----|270335-----|828951
|0-------|All Heap Allocations------|15.30 MB-----|269980-----|826939
|0-------|All Anonymous VM----------|43.39 MB-----|355--------|2012
|0-------|VM: CoreAnimation---------|27.01 MB-----|222--------|58
|0-------|VM: CG image--------------|7.40 MB------|3----------|189
|0-------|VM: UITextFieldLabel------|4.30 MB------|25---------|0
mit Instrumenten beobachtet i, daß für jeden Paging 4-6 Objekte erstellt werden. Aber sie werden nicht freigegeben, auch wenn ich die View Controller
Ich habe versucht, die Animationen aus den Schichten mit der folgenden Methode nach jedem Paging entfernen. aber es funktioniert nicht.
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
CGFloat pageHeight = CGRectGetHeight(self.ImageSlider.frame);
NSUInteger page = floor((self.ImageSlider.contentOffset.y - pageHeight/2)/pageHeight) + 1;
currentPage = page;
delegate.currentPage = page;
[delegate refreshTags];
[self unloadPageFromScrollView:currentPage-2];
[self unloadPageFromScrollView:currentPage+2];
[self loadScrollViewWithPage:currentPage - 1];
[self loadScrollViewWithPage:currentPage];
[self loadScrollViewWithPage:currentPage + 1];
}
- (void)unloadPageFromScrollView:(NSUInteger)page
{
@autoreleasepool {
if (page > docList.count-1) {
return;
}
if ((NSNull *)[self.viewControllers objectAtIndex:page] != [NSNull null]) {
PageViewController1 *controller = [self.viewControllers objectAtIndex:page];
for (CALayer* layer in [self.view.layer sublayers]) {
[layer removeAllAnimations];
}
[controller.view removeFromSuperview];
[self.viewControllers replaceObjectAtIndex:page withObject:[NSNull null]];
}
}
}
Bitte helfen Sie mir, wenn jemand weiß, wie diese Kernanimationsobjekte freigegeben werden.
Guys sieht aus wie die Kern Animationsobjekte sind kein Ergebnis von Paging oder 'UIpageView'. Innerhalb einer Seite verschiebe ich ein paar UILabel, um sie zu positionieren. Dort findet die Animation statt. Aber diese Animationen werden nicht freigegeben, wenn ich die Seite entlade. Ich werde die Antwort posten, wenn ich sie veröffentlichen könnte. –