【问题标题】:NSMutableArray vs NSArrayNSMutableArray 与 NSArray
【发布时间】:2011-07-05 08:50:57
【问题描述】:

我创建了一个脚本,从服务器加载 XML 解析它并保存到 NSMutableArray

[kategorienArray addObject:catName];

catName 是一个字符串,如果我 NSLog 数组一切正常。

之后我创建了一个 tebleview,然后重新加载数据

[kategorienAuswahl reloadData];

KategorienAuswahl 是我的 TableView

现在解决问题

如果我使用“普通”数组

NSArray *array = [[NSArray alloc] initWithObjects:@"iPhone", @"iPod", @"iPad",nil];
    self.listData = array;
    [array release];

将显示,但如果我使用

cell.textLabel.text = [kategorienArray objectAtIndex:row]; 

我得到 EXC_BAD_ACCESS

相反,它可以与

一起正常工作
cell.textLabel.text = [listData objectAtIndex:row]; 

我加了一个

kategorienArray = [[NSMutableArray alloc] init];
    kategorienArray = [NSMutableArray arrayWithCapacity:10];

但现在我的 Tableview 中没有数据

【问题讨论】:

    标签: objective-c arrays ios xcode


    【解决方案1】:

    您可能尚未初始化您的kategorienArray。 您的代码中有kategorienArray = [[NSMutableArray alloc] init]; 吗?您应该在向其中添加对象然后访问它们之前完成此操作。

    另外,请确保您的数组保留在创建它的位置,以便系统在您访问其项目之前不会回收其内存。我用来确保一切正常的方法是将可变数组声明为属性。在您的视图控制器的 .h 文件中放置

    @property (nonatomic, retain) NSMutableArray *kategorienArray;
    

    并在您的 .m 文件中放置

    @synthesize kategorienArray;
    

    在顶部,然后

    self.kategorienArray = [NSMutableArray array];
    

    viewDidLoad 或某处,在向其中添加项目之前。

    【讨论】:

    • 在添加每个项目后放置一些 NSLog 语句,以确保您确实添加了数据(执行了该部分代码)并且您的数组被添加到:NSLog(@"%d" , [kategorienArray 计数]);
    • 好消息!如果您认为它可以解决您的问题,请考虑接受答案。
    • @luvieere 我修复了代码中的内存泄漏(假设非 GC 和非 ARC)
    【解决方案2】:

    问题可能是“kategorienArray”已(自动)发布。 'kategorienArray' 是 ivar 吗? 检查您在创建数组时是否正确保留了它(特别是如果您使用类方法创建它)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多