2013-10-30 36 views
0

使用「分析」,在dealloc中,我得到:不是擁有的對象的引用計數的錯誤遞減此時由來電者打電話內存泄漏 - 調用者在此時未擁有的對象的引用計數的錯誤遞減

- (void)loadScrollViewWithPage:(int)page { 
    int kNumberOfPages = [dataSource numberOfPages]; 

if (page < 0) return; 
if (page >= kNumberOfPages) return; 

// replace the placeholder if necessary 
UIImageView *view = [imageViews objectAtIndex:page]; 
if ((NSNull *)view == [NSNull null]) { 
    view = [dataSource imageAtIndex:page]; 
    [imageViews replaceObjectAtIndex:page withObject:view]; 
    [view release]; //<--here 
} 
// add the controller's view to the scroll view 
if (nil == view.superview) { 
    CGRect frame = scrollView.frame; 
    frame.origin.x = frame.size.width * page; 
    frame.origin.y = 0; 
    view.frame = frame; 
    [scrollView addSubview:view]; 
} 

} 

如何解決?謝謝。

+0

[dataSource imageAtIndex:page]給你一個借來的參考。如果你不擁有它,你不能釋放它。 –

+1

兄弟,你是對的。謝謝很多。@ DavidK.Hess –

回答

1

結賬Basic Memory Management Rules

您的[dataSource imageAtIndex:page]爲您提供了查看的參考 - 但不是所有權。你只能「釋放」你擁有的物體。您通過以「alloc」,「new」,「copy」或「mutableCopy」開頭的方法或顯式調用「retain」來獲得對象的所有權。

+0

分析沒問題,當我刪除「[查看發佈];」。非常感謝。 –

相關問題