簡體   English   中英

為什么儀器將自定義UITableViewCell代碼報告為內存泄漏?

[英]Why is Instruments reporting custom UITableViewCell code as a memory leak?

我仍在嘗試通過iPhone SDK的內存管理找到自己的方式,而且我不確定為什么儀器將某些代碼塊報告為內存泄漏。 我已經按照教程中的這些部分進行了編程,所以我不確定自己在做什么錯。

違反的代碼塊:

DreamTableCell *cell = (DreamTableCell *)[tableView dequeueReusableCellWithIdentifier:cellID];
if ( cell == nil )
    cell = [[[DreamTableCell alloc] initWithFrame:CGRectZero reuseIdentifier:cellID] autorelease];

另外,據我所知,有一個DreamTableCell的自定義方法,其中加載了UITableViewCell的NIB文件,沒有任何異常:

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {
    NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"DreamTableCell" owner:nil options:nil];
    for ( id item in objs )
        if ( [item isKindOfClass:[DreamTableCell class]] ) {
            self = item;
            break;
        }
    return self;
}

是什么導致內存泄漏在這里-我想念什么?

這是一行:

self = item;

您將self設置為新的實例變量,並且由於您處於init ,因此已創建了一個現有實例。 您需要先釋放全新的自我,然后再將其設置為其他事物:

[self release];
self = item;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM