2011-03-07 65 views
1

我有一個UITableViewcontroller重用於不同的數據 - RecipeItems和ConvertedRecipeItems(它是RecipeItem的子類)的數組。UITableCell textLabel超出範圍

第一次,我查看ConvertedRecipeItems細胞渲染正常。如果我查看單元格的細節然後返回,則SECOND ConvertedRecipeItem會崩潰應用程序。調試時,我看到單元格的textLabel「超出了範圍」。我無法弄清楚會造成這種情況。

請注意,對於常規RecipeItems,這一切工作正常。

這裏是的cellForRowAtIndexPath代碼:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"RecipeCell"; 

    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (cell == nil) { 
      //we're storing so don't auto-release 
      cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
     } 

    // Set up the cell... 
     NSUInteger row = [indexPath row]; 
     RecipeItem* r = [recipes objectAtIndex:row]; 
     cell.textLabel.text = r.name; 

    return cell; 

} 

謝謝!

回答

1

您應該自動釋放新創建的單元格;否則你會泄漏該單元格。

tl和tls的用途是什麼?刪除這些行,然後重試。我有一種感覺,那些可能是罪魁禍首。反正他們什麼也沒做。

的範圍外的錯誤有趣的是,雖然-GDB通常不會報出的範圍爲properly declared ivars.

+0

是的。我嘗試了autorelease,發生了同樣的事情。 tl和tls只是讓我可以檢查問題出在哪裏。同樣,它們根本不影響結果。 – rmw 2011-03-07 01:30:09

+0

我會認爲這個問題可能在tl和tls中。除此之外,在這裏看起來並不是什麼問題。你可以發佈更多的代碼(表代表方法和RecipeItem的代碼)。這也可能是食譜的問題 - 嘗試使用self.recipes。 – FeifanZ 2011-03-07 02:11:31

0

我看不到任何東西,可能會崩潰(提供您在tableView:numberOfRowsInSection:返回正確的計數)。我懷疑這個問題與你的詳細信息屏幕有關。什麼是崩潰控制檯輸出?

由於Inspire48已經提到你應該自動釋放新的單元格。 「//我們正在存儲所以不要自動釋放」是不正確的。表存儲它們,而不是您班級的實例。