2013-09-26 104 views
5

Tôi đang tạo một ứng dụng thư viện hình ảnh trong IOS, nơi người dùng có thể duyệt qua các hình ảnh trong thư viện. Tôi đã sử dụng một trang được kích hoạt UIScrollView như trong mã số this mẫu. Mọi thứ đang hoạt động. Nhưng vấn đề là trong khi tôi di chuyển qua các trang, số lượng các đối tượng hoạt hình lõi được tạo ra và chúng không bao giờ phát hành.Đối tượng hoạt ảnh lõi iOS không phát hành


|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 

sử dụng công cụ tôi quan sát thấy rằng đối với mỗi phân trang 4-6 đối tượng được tạo ra. Nhưng chúng sẽ không phát hành ngay cả khi tôi rời khỏi View Controller

Tôi đã thử xóa hoạt ảnh khỏi các lớp bằng cách sử dụng phương pháp sau sau mỗi lần phân trang. Nhưng nó không hoạt động.

- (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]]; 

     } 
    } 

} 

Hãy giúp tôi nếu có ai biết cách phát hành các đối tượng hoạt ảnh lõi đó.

+0

Những người giống như các đối tượng hoạt ảnh chính không phải là kết quả của phân trang hoặc 'UIpageView'. Bên trong một trang tôi đang di chuyển một số 'UILabel's để định vị chúng. Đó là nơi hoạt hình diễn ra. Nhưng những hình ảnh động đó không được phát hành khi tôi tải trang. Tôi sẽ đăng câu trả lời Nếu tôi có thể làm cho họ phát hành. –

Trả lời

8

Phát hiện ra hoạt ảnh do các trang bên trong gây ra.

Bên trong pageViewController (viewController mà thêm vào scrollView như là một trang) trên viewWillDisappear:(BOOL)animated phương pháp tôi đã thêm này

for (CALayer* layer in [self.view.layer sublayers]) 
    { 
     [layer removeAllAnimations]; 
    } 

nó giải quyết vấn đề.