【问题标题】:Program received signal: “EXC_BAD_ACCESS”节目接收信号:“EXC_BAD_ACCESS”
【发布时间】:2026-02-04 12:45:01
【问题描述】:

将数组数据写入 nsmarrHeader 和 nsmarrData 工作正常。 当我将那些“2D”NSMutableArrays 写入结构时,我得到:程序接收信号:“EXC_BAD_ACCESS”。

struct typeFile structFile;

[structFile.nsmarrHeader addObjectsFromArray: nsmarrHeader];
[structFile.nsmarrData addObjectsFromArray: nsmarrData];

这得到同样的错误:

[structFile.nsmarrHeader addObject: nsmarrHeader];
[structFile.nsmarrData addObject: nsmarrData];

所以我不确定写入结构有什么问题或者我应该做些什么不同的事情?

谢谢

【问题讨论】:

  • [structFile nsmarrHeader] 和 nsmarrHeader 是同一个数组吗? nsmarrData 实例的相同问题
  • 是否有使用 C 风格的结构来保存 NSMutableArrays 的目的?

标签: objective-c cocoa-touch


【解决方案1】:

如果您将objective-c 对象作为普通结构字段,则默认情况下它们不会被初始化,因此在您的代码中您试图向未初始化的对象发送消息,从而得到EXC_BAD_ACCESS 错误。

在使用结构字段之前,您应该显式初始化它们,但我认为如果可以更好地使用objective-c 对象而不是普通结构 - 这将使您更容易(例如内存管理)

【讨论】: