gpt4 book ai didi

objective-c - 消失的 NSMutableArray,导致 UiTableView 显示空白单元格

转载 作者:行者123 更新时间:2023-11-29 04:55:51 25 4
gpt4 key购买 nike

我有一个 UITableView,它显示食谱列表。我使用自定义类 Recipe 创建每个菜谱,然后将菜谱放入 msmutable 数组“recipes”中。问题是,当我开始滚动“菜谱”数组时,它似乎丢失了所有数据(计数为 0)。这意味着进入 View 的单元格无法显示任何配方信息。究竟发生了什么?为什么数组会消失?

代码如下:

// .h

#import "CustomCell.h"
#import "Recipe.h"
@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UITableView *recipeTableView;
@property (weak, nonatomic) NSMutableArray *recipes;


// .m
@synthesize recipeTableView;
@synthesize Recipes;

- (void)viewDidLoad
{
[super viewDidLoad];
Recipe *recipe1 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 1"];
recipe1.recipeImage = [UIImage imageNamed:@"recipeImage1.png"];

Recipe *recipe2 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 2"];
recipe2.recipeImage = [UIImage imageNamed:@"recipeImage2.png"];

Recipe *recipe3 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 3"];
recipe3.recipeImage = [UIImage imageNamed:@"recipeImage3.png"];

Recipe *recipe4 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 4"];
recipe4.recipeImage = [UIImage imageNamed:@"recipeImage4.png"];

Recipe *recipe5 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 5"];
recipe5.recipeImage = [UIImage imageNamed:@"recipeImage5.png"];

Recipe *recipe6 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 6"];
recipe6.recipeImage = [UIImage imageNamed:@"recipeImage6.png"];

Recipe *recipe7 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 7"];
recipe7.recipeImage = [UIImage imageNamed:@"recipeImage7.png"];

Recipe *recipe8 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 8"];
recipe8.recipeImage = [UIImage imageNamed:@"recipeImage8.png"];

Recipe *recipe9 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 9"];
recipe9.recipeImage = [UIImage imageNamed:@"recipeImage9.png"];

Recipe *recipe10 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 10"];
recipe10.recipeImage = [UIImage imageNamed:@"recipeImage10.png"];


recipes = [NSMutableArray arrayWithObjects:recipe1, recipe2, recipe3, recipe4, recipe5, recipe6, recipe7, recipe8, recipe9, recipe10, nil];

}




- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
Recipe *recipe = (Recipe*)[recipes objectAtIndex:indexPath.row];
static NSString *CellIdentifier = @"RecipeCell";
CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.titleLabel.text = recipe.title;
return cell;
}

最佳答案

您的数组正在自动释放,请在配方分配后添加以下内容...

[recipes retain];

或者将创建数组的方式更改为...

recipes = [[NSMutableArray alloc] initWithObjects:.... etc

如果您在 iOS5 中使用 ARC,那么您应该将您的食谱变量声明为强,这样可以有效地为您保留。

关于objective-c - 消失的 NSMutableArray,导致 UiTableView 显示空白单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7998126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com