NSCell 未正确显示

发布于 2024-10-20 11:17:22 字数 352 浏览 5 评论 0原文

我在 NSTableView 中有一个自定义 NSCell,但它无法正确显示。表视图中有正确数量的项目,但除了第一个之外,它们是空的。第一个显示单元格,但当我单击 NSTableView 上的某个位置时,它的值会随机变化。我怀疑这与我的单元格的 copyWithZone: 有关。我的单元格没有任何 iVar,只有一个绘制其 objectValue 的 drawWithFrame:inView: 方法。在 copyWithZone: 中,我返回 [[[MyCell allocWithZone: zone] init] autorelease]

我应该返回其他内容吗?

I have an custom NSCell in an NSTableView and it doesn't display correctly. The table view has the right number of items in it but they're empty except for the first one. The first one shows the cell but its values change randomly when I click somewhere on the NSTableView. I suspect this has something to do with my cell's copyWithZone:. My cell doesn't have any iVars, just a drawWithFrame:inView: method that draws its objectValue. In copyWithZone: I return [[[MyCell allocWithZone: zone] init] autorelease]

Should I return something else?

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

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

发布评论

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

评论(1

坐在坟头思考人生 2024-10-27 11:17:22

您不应该 -autorelease -copyWithZone: 的结果。 “copy”是 Cocoa 中的三个魔词(new、alloc 和 copy)之一,表明返回的对象应该有一个有效的 +1 保留。

另请注意,您应该始终在某个时刻调用单元格的指定初始值设定项(initImageCell:initTextCell:)。如果您的 init 没有调用其中之一,那么您可能没有正确初始化单元格。请参阅子类化 NSCell

You should not -autorelease the result of -copyWithZone:. "copy" is one of the three magic words in Cocoa (new, alloc and copy) that indicate that the returned object should have an effective +1 retain on it.

Also, note that you should always call the cell's designated initializer at some point (initImageCell: or initTextCell:). If your init doesn't call one of those, then you're probably not initializing your cells correctly. See Subclassing NSCell.

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