核心数据和自定义 NSCell
我正在使用两个实体 Log
(属性 text
和 date
)和 Tag
的核心数据构建一个玩具应用程序从Log
到Tag
的多对多tags
关系。
我想在表中显示日志,因此我:
- 在 IB 中创建了一个
NSArrayController
实例LogController
,并将实体设置为Log
(pic) - 创建了一个单列
NSTableView
,其列绑定到LogController
。 pic - 链接了我的应用程序委托中的
LogController
(AppDelegate
)使用IBOutlet
。AppDelegate
还具有managedObjectContext
。 - 创建了一个带有
NSString
属性mainText
和tagsText
的自定义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 toLog
(pic) - created a one-column
NSTableView
whose column is bound toLogController
. pic - linked the
LogController
in my app delegate (AppDelegate
) usingIBOutlet
.AppDelegate
also has themanagedObjectContext
. - created a custom
NSCell
class withNSString
propertiesmainText
andtagsText
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 thetagsText
I get the tags for the current log and concatenate them into a singleNSString
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
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"?