核心数据和自定义 NSCell

发布于 2024-08-14 16:39:19 字数 1132 浏览 12 评论 0原文

我正在使用两个实体 Log (属性 textdate)和 Tag 的核心数据构建一个玩具应用程序从LogTag的多对多tags关系。

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

  • 在 IB 中创建了一个 NSArrayController 实例 LogController,并将实体设置为 Log (pic)
  • 创建了一个单列 NSTableView,其列绑定到 LogControllerpic
  • 链接了我的应用程序委托中的 LogController (AppDelegate )使用IBOutletAppDelegate 还具有 managedObjectContext
  • 创建了一个带有 NSString 属性 mainTexttagsText 的自定义 NSCell 类,我将其绘制到单元格上
  • 我设置了以上两个- (void)tableView: willDisplayCell: forTableColumn: row: 方法中的 AppDelegate 中的单元格属性。 (MainController 也是表的委托)。对于 tagsText 我获取当前日志的标签并将它们连接成一个 NSString

一切正常,除了:当我用鼠标选择显示多个标签的行时应用因 EXC_BAD_ACCESS 崩溃。这是我唯一一次出现错误,但我不知道是什么原因造成的。

I am building a toy app using core data for two entities Log (attributes text and date) and Tag with a many-to-many tags relationship from Log to Tag.

I want to show logs in a table, so I:

  • created an NSArrayController instance, LogController in IB with entity set to Log (pic)
  • created a one-column NSTableView whose column is bound to LogController. pic
  • linked the LogController in my app delegate (AppDelegate) using IBOutlet. AppDelegate also has the managedObjectContext.
  • created a custom NSCell class with NSString properties mainText and tagsText that I draw onto the cell
  • I set the above two cell properties in AppDelegate in the - (void)tableView: willDisplayCell: forTableColumn: row: method. (MainController is also the table's delegate). For the tagsText I get the tags for the current log and concatenate them into a single NSString

Everything works fine, except: When I mouse-select a row that displays multiple tags the app crashes with an EXC_BAD_ACCESS. That's the only time I have any error, but I don't know what is causing it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你的背包 2024-08-21 16:39:19

EXC_BAD_ACCESS 是内存错误。您在释放对象后正在使用它。如果没有代码,调试起来会很困难。

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

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

EXC_BAD_ACCESS is a memory error. You are using an object after deallocating it. It would be difficult to debug this without the code.

Are you using the garbage collector? You do not have to manage memory yourself on the Mac.

Are the properties in your custom NSCell declared as "retain"?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文