Memory management 核心数据和自定义NSCell

Memory management 核心数据和自定义NSCell,memory-management,core-data,macos,nsarraycontroller,nscell,Memory Management,Core Data,Macos,Nsarraycontroller,Nscell,我正在构建一个玩具应用程序,使用两个实体的核心数据日志属性文本和日期以及标签,从日志到标签具有多对多标签关系 我想在表中显示日志,因此我: 在IB中创建了NSArrayController实例LogController,实体设置为Log 创建了一个列绑定到LogController的单列NSTableView。 使用IBOutlet链接我的应用程序代理AppDelegate中的LogController。AppDelegate还具有managedObjectContext。 创建了一个自定义NS

我正在构建一个玩具应用程序,使用两个实体的核心数据日志属性文本和日期以及标签,从日志到标签具有多对多标签关系

我想在表中显示日志,因此我:

在IB中创建了NSArrayController实例LogController,实体设置为Log 创建了一个列绑定到LogController的单列NSTableView。 使用IBOutlet链接我的应用程序代理AppDelegate中的LogController。AppDelegate还具有managedObjectContext。 创建了一个自定义NSCell类,该类具有NSString属性mainText和tagsText,我将它们绘制到单元格上 我在-voidtableView:willDisplayCell:forTableColumn:row:方法的AppDelegate中设置了上述两个单元格属性。MainController也是表的委托。对于tagsText,我获取当前日志的标记,并将它们连接到单个NSString中 一切正常,除了:当我用鼠标选择显示多个标签的行时,应用程序会因EXC\u BAD\u访问而崩溃。这是我唯一一次出错,但我不知道是什么原因造成的。

EXC\u BAD\u ACCESS是一个内存错误。解除分配对象后,您正在使用该对象。如果没有这些代码,就很难调试它

你在用垃圾收集器吗?您不必自己在Mac上管理内存


自定义NSCell中的属性是否声明为保留?

正确:我没有将其中一个属性声明为保留。这就解决了问题。